LoginSignup
1
1

More than 5 years have passed since last update.

直接アクセスを拒否するけどSSIのincludeアクセスは許可したい時の.htaccess設定

Last updated at Posted at 2013-05-30

SSIで読み込むファイルが入ったディレクトリへの直接アクセスを禁止したいと思った時にハマって、そして解決したのでメモ。

設定例

/_ssi/ というディレクトリにSSI用のファイルがあって、ここへの直接アクセスを禁止したい。

失敗例

.htaccessに以下のように単純に書くと失敗します。

RewriteEngine on
RewriteRule ^/?_ssi/ - [F]

確認のために http://example.com/_ssi/ へ直接アクセスしてみると全て 403 Forbidden になって出来たー。と思うのもつかの間、実はこれだとSSIのinclude読み込みまでも拒否してしまうので全然駄目です…orz

成功例

SSIでの読み込みか直接アクセスなのかを区別したいときには%{IS_SUBREQ}というのが使えます。これはそのリクエストが通常のリクエストなのかhttpd内部でのサブリクエストかどうかを判定する為のRewriteCondで使える特殊変数で、trueかfalseが入っています。

RewriteEngine on
RewriteCond %{IS_SUBREQ} =false
RewriteRule ^/?_ssi/ - [F]

なので、こんな感じの設定をしてやれば「SSIでは読み込めるけど直接アクセスは禁止」が実現できるってわけですす。

参考

mod_rewrite - Apache HTTP Server

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1