【mod_rewrite】URLの正規化(wwwのありなし、index.htmlのありなし)
mod_rewriteを利用して「www」のありなし、「index.html」のありなしを統一する、いわゆるURL正規化の方法を説明します。
スポンサードリンク
wwwなしに正規化
一般的に、「http://○○○.com/~」と「http://www.○○○.com/~」でアクセスした場合、どちらとも同じファイルが表示されます。
(今はどうなのかわかりませんが)SEOの関係上どちらかに統一した方がよいと言われているのでwwwなしに正規化したいと思います。
方法は.htaccessに以下を記述するだけです。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.○○○\.com$
RewriteRule ^(.*)$ http://○○○.com/$1 [R=301,L]
この詳細の解説は、RewriteCondを読んでください。
index.htmlなしに正規化
「http://○○○.com/」と「http://○○○.com/index.html」でアクセスした場合、どちらともルートディレクトリの「index.html」が表示されます。
これもどちらかに統一したほうがよいと言われている(言われていた)ので、index.htmlなしに正規化したいと思います。
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://○○○.com/$1 [R=301,L]
解説
「http://○○○.com/index.html」でアクセスがあった場合、サーバ変数「%{THE_REQUEST}」には「GET /index.html HTTP/1.1」みたいなものが渡り、これはRewriteCondの条件パターンにマッチするので、RewriteRuleが実行されます。
すなわち、RewriteRuleのパターン「^(.*)index.html$」には「index.html」が渡り、置換が行われて「http://○○○.com/」になります。
同様に、「http://○○○.com/hoge/index.html」でアクセスがあった場合、RewriteRuleのパターン「^(.*)index.html$」には「hoge/index.html」が渡り、置換が行われて「http://○○○.com/hoge」になります。
Warning: count(): Parameter must be an array or an object that implements Countable in /home/yskymk/www/000web/ysklog/mod-rewrite/wp-includes/class-wp-comment-query.php on line 405
コメント
まだコメントはありません。