.html/でのアクセス
以前、Googleアナリティクスを眺めていた時のことです。
http://example.com/sample.html/
あるサイトが上記のような.htmlの後にスラッシュが付いた間違ったURLで複数回アクセスされていることがありました。
どういった経緯でアクセスされたのかは不明でしたが、
末尾にスラッシュを付けてアクセスするとページが正しく表示されません。
そこで、.htaccessを使って末尾の「/」(スラッシュ)を消す方法をいくつか試してみました。
URLの末尾にスラッシュを自動補完をしないように設定する
URLの末尾にスラッシュが自動でついてしまう場合があるため、それを無効化にする方法です。
.htaccessに以下の様に記述します。
# .htaccess
DirectorySlash Off
▼参考サイト
http://combitaro.net/article/152
しかし、今回の場合はこれでは上手く反映されませんでした。
自動補完ではなかったのでしょうか。。
.html/にアクセスされた際に.htmlにリダイレクトさせる
次に.htaccessを使って.html/でアクセスされた場合に.htmlにリダイレクトさせる方法を試しました。
例えば、http://example.com/sample.html/にアクセスされたら、
http://example.com/sample.htmlにリダイレクトするという方法です。
.htaccessに以下の様に記述します。
# .htaccess
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(example.com/sample.html/)(:80)? [NC]
RewriteRule ^(.*) http://example.com/sample.html$1 [R=301,L]
wwwありをwwwなしにする場合によく使われるようです。
結局これでも上手く反映されません。
mod_rewriteを利用してリダイレクトさせる
最後に試したのがmod_rewriteを利用してリダイレクトさせる方法です。
これはmod_rewriteが有効な場合のみ適用されるようです。
.htaccessに以下の様に記述します。
# .htaccess
RewriteRule ^(.*)/+$ $1 [R=301,L]
スラッシュが消えた…!
これで、
http://example.com/sample.html/にアクセスされても、
http://example.com/sample.htmlを表示させることができました。
色々な方法を覚えておくと、いざという時スムーズに対処できそうですね。