php:phpでhttpsへリダイレクトする

前回は.htaccesshttpsのページへリダイレクトする方法を書きましたが、今回はphphttpsのページへリダイレクトする方法をメモします。

httpsのページが数ページ程度であれば、phpのファイルでリダイレクト処理をしてもいいかもしれないです。
その時の状況で使い分けるといいかもしれませんね。

phpでも処理内容は同じなのでhttpsではない場合に、header()関数を利用してリダイレクトします。


phpでhttpsへリダイレクト

phpファイルの先頭に下記の内容を記述します。

if (empty($_SERVER['HTTPS'])) {
	header("Location: https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
	exit();
}

$_SERVER[‘HTTPS’]が空の場合、アクセスしたURLをhttpsのページへとリダイレクトします。
httpsでアクセスした場合は上記のif文に入らないので、それ以降の処理を実行します。


.htaccess:.htaccessでhttpsへリダイレクトする

httpでアクセスされた際にhttpsのページへリダイレクトさせたい場合があります。
.htaccessを使用するとhttpsリダイレクトさせることが可能です。

その時の方法をメモします。


.htaccessでhttpsへリダイレクト

.htaccessのファイルに下記の内容を記述します。

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>

SSL通信したいディレクトリに.htaccessを設置します。
設置したディレクトリ以下のページに適用されます。
サイト全体に適用させる場合は、ドキュメントルートに設置します。


■ .htaccess 記述内容

RewriteEngine on

RewriteEngineを有効にします。


RewriteCond %{HTTPS} off

httpsではない場合という条件を付けます。


RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

アクセスされたURLをhttpsのページへリダイレクトします。


Javascript:ボタン押下時、確認メッセージを出力

submitボタンを押したときに確認メッセージボックスを出力し、「OK」が押された時のみサブミットしたい場合があります。
Javascriptを使用してsubmitボタン押下時に確認メッセージを出力する方法をメモします。

いつも忘れてしまいます。。。


onclick時にconfirm()を使用し、ダイアログを出力

<input type="submit" value="実行" onclick="return confirm('実行しますか?');">

「OK」をクリックした時はtrueを返し、「キャンセル」をクリックした時はfalseを返します。


「OK」と「キャンセル」で処理を分岐する

Javascript

<script type="text/javascript">
function submitbtn() {
    // 「OK」ボタン押下時
    if (confirm('実行しますか?')) {
        alert('OK');
    }
    // 「キャンセル」ボタン押下時
    else {
        alert('キャンセル');
    }
}
</script>

HTML

<input type="submit" value="実行" onclick="submitbtn();">

「OK」と「キャンセル」で別の処理を追加することが可能です。


Linux:シンボリックリンクの所有者を変更する

シンボリックリンク所有者所有グループchownコマンド変更しようとしたのですが、何度実行しても所有者や所有グループを変更することができませんでした。

下記にその時のコマンドを記載します。
※シンボリックリンク「img」の所有者や所有グループを「hoge」に変更する場合です。

# ls -la
lrwxrwxrwx 1 root root   41  5月 15 20:26 img -> /var/www/html/hoge/img
-rw-r--r-- 1 hoge hoge 1600  5月 15 17:25 index.php
# chown hoge:hoge img
# ls -la
lrwxrwxrwx 1 root root   41  5月 15 20:26 img -> /var/www/html/hoge/img
-rw-r--r-- 1 hoge hoge 1600  5月 15 17:25 index.php

所有者や所有グループが変更されませんでした。

シンボリックリンクの所有者や所有グループを変更する場合はオプションで「-h」を付けないと変更できないそうです。

-hオプションはシンボリックリンクを変更する場合に使用します。
リンク自身の所有者、所有グループを変更します。

-hオプションを使用して変更した際のコマンドを下記に記載します。

# ls -la
lrwxrwxrwx 1 root root   41  5月 15 20:26 img -> /var/www/html/hoge/img
-rw-r--r-- 1 hoge hoge 1600  5月 15 17:25 index.php
# chown -h hoge:hoge img
# ls -la
lrwxrwxrwx 1 hoge hoge   41  5月 15 20:26 img -> /var/www/html/hoge/img
-rw-r--r-- 1 hoge hoge 1600  5月 15 17:25 index.php

シンボリックリンクの所有者、所有グループを変更することができました。
また、下記のように末尾に「/」を付けて実行すると変更されませんでした。

# chown -h hoge:hoge img/

php:phpで301リダイレクトする方法

WEBサイトドメインを変更した場合など、前のドメインにアクセスした際に新しいドメインに転送したい場合があります。
その場合は301リダイレクトし、現在のサイトにリダイレクトします。

301リダイレクトは永久的にサイトの引越しをする場合に使用します。
検索エンジンに引越ししたことを伝えるのでSEOを考慮してリダイレクトをすることができます。

.htaccessでリダイレクトする方法もありますが、今回はphp301リダイレクトする方法をメモします。


phpで301リダイレクト

リダイレクト元のページの先頭に下記のソースを記述します。
Locationにリダイレクト先のURLを書きます。

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://raining.bear-life.com/");
exit();
?>

前のドメインにアクセスすると、指定したURLにリダイレクトされます。
ページごとにリダイレクトを指定したい場合などはいいと思います。