WebARENAで.htaccessを用いてwwwあり・なし統一、index.htmlあり・なし統一させる方法

SEOを考えたサイト制作初期にやるべきこととしてwwwあり・なし統一、index.htmlあり・なし統一があります。

今まで某サーバーにてドメイン直下に.htaccessファイルを入れて

RewriteEngine on
RewriteBase /
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://xxx.co.jp/$1 [R=301,L]

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

という感じで統一していたのですが、NTT系サーバーのWebARENAに移転したところ、同じ記述をしても統一されませんでした。

いろいろ四苦八苦したところ、ドメイン直下に入れていた.htaccessファイルには問題はないことが判明。

WebARENAではマルチドメインツールというのを用いてひとつのサーバーで複数ドメインを運用できるのですが、そのマルチドメインツールで自動生成された.htaccessファイルがミソでした。

以下WebARENAでwwwあり・なし統一、index.htmlあり・なし統一させる手順。




①マルチドメインツールにてxxx.co.jpとwww.xxx.co.jpをマルチドメイン化。

するとサーバーのhomeフォルダ直下に

# Enable RewriteEngine.
RewriteEngine On

# Main RewriteRule for multidomain.
RewriteCond %{HTTP_HOST} ^(xxx.co.jp|www.xxx.co.jp)
RewriteCond %{REQUEST_URI} !^/(xxx.co.jp|www.xxx.co.jp)/
RewriteRule ^(.*)$ /%{HTTP_HOST}/$1/ [L]

と書かれた.htaccessファイルが自動生成される。


②homeフォルダにxxx.co.jpという名前のフォルダとwww.xxx.co.jpという名前のフォルダを作る。


③xxx.co.jpには

RewriteEngine on
RewriteBase /
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://xxx.co.jp/$1 [R=301,L]

と書いた.htaccessファイルを置く。


④www.xxx.co.jpフォルダには

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

と書いた.htaccessファイルを置く。



と、ここまでは問題なくできると思いますが、これでは何故かうまく統一されませぬ。多分ここで詰まる方は多いかと。


実は自動生成されたhomeフォルダ直下の.htaccessファイルに問題があります。

# Main RewriteRule for multidomain.
RewriteCond %{HTTP_HOST} ^(xxx.co.jp|www.xxx.co.jp)
RewriteCond %{REQUEST_URI} !^/(xxx.co.jp|www.xxx.co.jp)/
RewriteRule ^(.*)$ /%{HTTP_HOST}/$1/ [L]

最後のスラッシュが問題です。
このスラッシュを消すとうまい具合に統一されます。

このスラッシュがあるままだと、http://www.xxx.co.jp/はうまくhttp://xxx.co.jp/に行くのですが、
http://www.xxx.co.jp/aaa.htmlなどはhttp://xxx.co.jp/aaa.html/に行ってしまったりします。