Net: .htaccess で特定ディレクトリのアクセスを拒否する方法

通常、http サーバが Apache かつ .htaccess が使用できる場合で、特定ディレクトリのアクセスを拒否したい場合は、そのディレクトリの .htaccess ファイルに deny from all とでも記述すればよいが、ある URL のドキュメントルートの下に、別 URL のドキュメントルートがあるような場合で、どちらかの URL からのアクセスのみ許可したい等の場合は使えない。

下記のように、
  • http://www.example.com/
    ドキュメントルート : /hoge/
  • http://www.example.net/
    ドキュメントルート : /hoge/contents.net/
と、www.example.com のドキュメントルートの下に www.example.net のドキュメントルートが存在するように定義されている場合、http://www.example.com/contents.net/ 以下の URL にアクセスすると、当然ながら www.example.net で表示されるコンテンツの表示できる。

これを
  • http://www.example.com/contents.net/ → アクセスを拒否
  • http://www.example.net/ → アクセスを許可
としたい場合の .htaccess 記述方法の例。

下記の内容の .htaccess ファイルを http://www.example.net/ のドキュメントルート、/hoge/contents.net/ 直下に設置する。

SetEnvIf Request_URI "^/contents\.net/.*" DenyReq
order allow,deny
deny from env=DenyReq
allow from all

※上記設定が有効となるには、AllowOverride で FileInfo と Limit が許可になっている必要がある。
※当然、http://www.example.net/contents.net/ という URL もアクセスできなくなる。

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*