Web制作メモ -トップへ-

[Apache] URLの末尾にスラッシュが自動補完される機能を無効化する

Apache2015.11.26 02:54

URLの末尾にスラッシュが自動補完されるというありがた迷惑なこの機能

無効にするには、.htaccessに「DirectorySlash Off」と記述するだけです。

しかし、今回やってみたところ、なぜか無効に出来ず、1時間以上ハマりました。

もっと言うと、以前もハマりまくって投げ出した記憶があります…

何度やっても、なぜかスラッシュが補完されてしまいます。

「DirectoryIndexが設定されていると無効に出来ないのかもしれない」と思って、DirectoryIndexを無効にする方法を調べたり、「今回使用しているレンタルサーバー(エックスサーバー)でデフォルトのDirectoryIndexが設定されているから出来ないのでは」とエックスサーバーのマニュアルを見てみたり…。

フタを開けてみれば簡単な話で、ブラウザを一回閉じてアクセスし直したところ、無事、補完されなくなりました。

.htaccessもどこかでキャッシュが使われているという事になります。

セッションが続いている間、サーバー側で何かキャッシュされるのか、ブラウザがそのキャッシュを使うようサーバーに指示しているというところでしょうか。

.htaccessを書き換える毎にブラウザをリスタートするのは面倒ですが、忘れないようにしておこうと思います。

これでサイトのURLを思うように設定できるようになりました。

URLの末尾にスラッシュを自動補完しないようにする

# .htaccess
DirectorySlash Off

ついでに、今回疑ってしまったDirectoryIndexはスラッシュの自動補完とは全く別の機能なので、勿論併用することが可能です。

ディレクトリへのアクセスがあった際にindex.htmlとindex.phpを試す

# .htaccess
DirectoryIndex index.html index.php