.htaccessサンプル:URLの正規化

.htaccess を使った URL 正規化を行うサンプルをご紹介します。 www なしを www ありへ正規化する方法、 index.html ありを index.html 無しへ 正規化する方法、 http へのアクセスを https でのアクセスへ正規化する方法についてそれぞれ解説します。

(Last modified: )

wwwなしをwwwありに正規化する

最初に www なしを www ありに正規化する場合です。 example.com を www.example.com へ正規化します。ドキュメントルートに設置した .htaccess で次のように記述します。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

実際に試してみます http://example.com/blog/hey.html へアクセスします。

wwwなしをwwwありに正規化する(1)

http://www.example.com/blog/hey.html へリダイレクトされました。

wwwなしをwwwありに正規化する(2)

逆に wwww ありを www なしに正規化する場合です。 www.example.com を www.example.jp へ正規化します。

RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

実際に試してみます http://www.example.com/blog/hey.html へアクセスします。

wwwなしをwwwありに正規化する(1)

http://example.com/blog/hey.html へリダイレクトされました。

wwwなしをwwwありに正規化する(2)

index.htmlありをindex.htmlなしに正規化する

次に index.html ありでアクセスした場合に index.html なしへ正規化する場合です。 http://www.example.com/dir/index.html を http://www.example.com/dir/ へ正規化します。ドキュメントルートに設置した .htaccess で次のように記述します。

RewriteCond %{THE_REQUEST} ^.*/index\.html
RewriteRule ^(.*)index.html$ http://www.example.com/$1 [R=301,L]

index.html だけでなく index.php も同じように正規化する場合には次のように記述します。

RewriteCond %{THE_REQUEST} ^.*/index\.(html|php)
RewriteRule ^(.*)index.(html|php)$ http://www.example.com/$1 [R=301,L]

実際に試してみます http://www.example.com/blog/index.html へアクセスします。

index.htmlありをindex.htmlなしに正規化する(1)

http://www.example.com/blog/ へリダイレクトされました。

index.htmlありをindex.htmlなしに正規化する(2)

httpへのアクセスをhttpsでのアクセスに正規化する

次に http でのアクセスを SSL/TLS を使った https でのアクセスに正規化する場合です。 http://www.example.com/ へのアクセスを https://www.example.com/ へ正規化します。ドキュメントルートに設置した .htaccess で次のように記述します。

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

逆に https でのアクセスを http でのアクセスに正規化する場合です。

RewriteEngine on
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

現在のテスト環境では試すことができませんが、他のサーバで同じ設定を行っている環境のテスト結果を参考までに記載します。 SSL/TLS なしの http://www.example.com/ へアクセスします。

httpへのアクセスをhttpsでのアクセスに正規化する(1)

SSL/TLS ありの https://www.example.com/ へリダイレクトされました。

httpへのアクセスをhttpsでのアクセスに正規化する(2)

-- --

.htaccess を使った URL 正規化を行うサンプルをご紹介しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。