特に切羽詰まった事情があったわけではないのですが、なんとなく、セキュリティ的に必要かと思い、「拡張子を持たないファイル(ドットの含まれないファイル名)へのWebアクセスを禁止しておいた方が良いだろう」と思って、次のようなファイルへのWebアクセスを禁止する措置を .htaccess に書いておりました。
^[^.]+$
上記の正規表現の意味するところは、ファイル名の中にドット(.)が1つも登場しないもの……つまり、拡張子を持たないファイルですね。それへのアクセスが来たら、403(Forbidden; アクセス禁止)を返すようにしておりました。
ところが、一昨日ようやく気づいたのですが、この記述があると、ファイル名だけでなく、ディレクトリ名についてもアクセス禁止となってしまうんですね。
すなわち、
http://www.inasoft.org/webhelp/
というディレクトリへのアクセスは正当でありアクセスできますが、
http://www.inasoft.org/webhelp
という、最後に / の付かないURLでアクセスした場合に、"webhelp" 部分がドットの内ファイル名とみなされるのかなんなのか、どうやらアクセス禁止扱いとなってしまうんですね。
通常、後者のようなURLへのアクセスがあった場合は、ブラウザが自動的に後ろに / を付加し、前者のURLに転送してアクセスしてくれます。
ところが、後者のURLを入力してみた段階で 403(Forbidden; アクセス禁止)となってしまうと、その後のブラウザの自動転送の動きが発生しなくなってしまう。
大失敗でした。
.htaccessは、もっと慎重に書かないといけませんね。
【サイト運営の最新記事】