皆さんご存知の通り、SEOの内部対策を考えることで、URLの正規化は書かせませんよね。
www有り・無しの両方がインデックスされてしまったり、index.htmlやindex.phpの有り無しのそれぞれにリンクやソーシャルシグナルが分散してしまい、せっかくのSEO対策が上手く働かない、ということはみなさん御存知の通り。 で、rel=canonicalで正規化したり、.htaccessで正規化してURLを統一する方法は世の中に沢山出回っているのですが、これちょっと不便なんですよね。
たとえば、ネットで検索するとよく出てくるのはこんな感じのコード↓
1 2 3 |
RewriteEngine on RewriteCond %{HTTP_HOST} ^example\.com$ RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] |
ただ、これだとexample.comの部分を自分のドメインに毎回置き換えないといけないので面倒ですし、何よりミスが起こりやすなりますよね。
そこで、今回は、ドメインをわざわざ置き換えなくても良いように汎用的に書いた.htaccess用の正規化コードを紹介します。
1 2 3 4 5 |
# WWW無しに統一 RewriteEngine on RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] |
1 2 3 4 5 6 |
# WWWありに統一 RewriteEngine on RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} !^www\..+$ [NC] RewriteCond %{HTTP_HOST} (.+)$ [NC] RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L] |
1 2 3 4 |
# index.htmlなしに統一 RewriteEngine on RewriteCond %{HTTP_HOST} (.+)$ [NC] RewriteRule ^(.*)index.html$ http://%1/$1 [R=301,L] |
1 2 3 4 |
# index.phpなしに統一 RewriteEngine on RewriteCond %{HTTP_HOST} (.+)$ [NC] RewriteRule ^(.*)index.php$ http://%1/$1 [R=301,L] |
ご参考下さい。