ssl http https への301での転送設定及び、wwwあり なしの統一設定 .htacccess
htaccessによるURL正規化
www有無、index.htmlやindex.phpなどの有無、httpとhttpsなどをhtaccessで統一すること出来ます。
たとえば、
統一種類 | URL1 | URL2 | → | URL1とURL2を統一 |
---|---|---|---|---|
www統一 | http://www.qualia999.jp | http://qualia999.jp | → | http://www.qualia999.jp |
index統一 | http://www.qualia999.jp/index.html | http://www.qualia999.jp | → | http://www.qualia999.jp |
http統一 | http://www.qualia999.jp | https://www.qualia999.jp | → | https://www.qualia999.jp |
URL正規化の構文サンプル
「www」ありなしの統一
「http://qualia999.jp/~」の場合、「http://www.qualia999.jp/~」に変更する
「https://qualia999.jp/~」の場合、「https://www.qualia999.jp/~」に変更する
# === wwwありに統一 ================================ RewriteEngine on RewriteCond %{HTTP_HOST} ^qualia999\.jp RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ http://www.qualia999.jp/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^qualia999\.jp RewriteCond %{SERVER_PORT} 443 RewriteRule ^(.*)$ https://www.qualia999.jp/$1 [R=301,L]
「http://www.qualia999.jp/~」の場合、「http://qualia999.jp/~」に変更する
「https://www.qualia999.jp/~」の場合、「https://qualia999.jp/~」に変更する
# === wwwなしに統一 ================================ RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.qualia999\.jp RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ http://qualia999.jp/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^www\.qualia999\.jp RewriteCond %{SERVER_PORT} 443 RewriteRule ^(.*)$ https://qualia999.jp/$1 [R=301,L]
「index」なしの統一
「http://qualia999.jp/index.hrml」の場合、「http://qualia999.jp/」に変更する
「https://qualia999.jp/index.html」の場合、「https://qualia999.jp/」に変更する
# === index.htmlなしに統一 ================================ RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index\.(html|php|cgi) RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)index\.(html|php|cgi)$ http://qualia999.jp/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^.*/index\.(html|php|cgi) RewriteCond %{SERVER_PORT} 443 RewriteRule ^(.*)index\.(html|php|cgi)$ https://qualia999.jp/$1 [R=301,L]
「http」「https」の統一
「http://qualia999.jp/~」の場合、「https://qualia999.jp/~」に変更する
→ 強制的に「https」(暗号化)通信に変更する
# === httpsに統一 ================================ RewriteEngine on RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
「https://qualia999.jp/~」の場合、「http://qualia999.jp/~」に変更する
→ 強制的に「http」通信に変更する
# === httpに統一 ================================ RewriteEngine on RewriteCond %{SERVER_PORT} 443 RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
構文解説
RewriteEngine |
「 RewriteEngine on 」 Rewrite機能を使用するかの指定を行います。 ON : 使用する |
---|---|
RewriteBase |
「 RewriteBase / 」 「Rewrite機能」のベースパスを指定します。 |
RewriteCond | 「RewriteRule」の実行条件を指定します。
環境変数を使用できるため、多くの要素を判断材料として使用できます。 「 RewriteCond %{HTTP_HOST} ^qualia999\.jp 」 上記は「HTTP_HOST」を参照し「qualia999.jp」で始まっている判定をしています。 「 RewriteCond %{SERVER_PORT} 80 」 上記は「SERVER_PORT」を参照し「80」との一致を判定しています。 「 RewriteCond %{THE_REQUEST} ^.*/index\.(html|php|cgi) 」 上記は「THE_REQUEST」を参照して次のページで終わっているかを判定しています。 |
RewriteRule | 転送ルールが記載されていることを表します。
RewriteRule ^(.*)$ http://www.qualia999.jp/$1 [R=301,L] +---①----+ +-②-+ +--------③---------+ +---④---+ ②はリダイレクト(転送)する、条件を正規表現で指定します。 ③は転送先のURLを指定します。 ④はオプションを指定します。通常は以下を使用します。 「R」:返却するhttpステータスを指定。「R」のみは302扱いとなります httpステータスコードを指定します。よく利用されるのは以下となります。 301 : Moved Permanently (完全に移動した) 一般的には、 |