あれー勘違いかな。今さらながら初歩的なところに疑問が。
ここのmanualにあるように、
<Location /private> Order Allow,Deny Deny from all </Location>
と設定すると、/privateから始まるURL
- http://yoursite.example.com/private,
- http://yoursite.example.com/private123,
- http://yoursite.example.com/private/dir/file.html
がLocationの設定の対象なので、上の設定だと全て403で制限されると書いている。で、自分も今までそう思ってた。
けど実際にやってみると/privateは制限されるけど、/private123は制限されないような。
cd /path/to/docroot echo test > test echo test2 > test2
- apacheの設定
<Location /test > deny from all </Location>
- 実験
$ curl http://example.com/test <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>403 Forbidden</title> </head><body> <h1>Forbidden</h1> <p>You don't have permission to access /hogetest on this server.</p> </body></html> $ curl http://example.com/test2 test2
/testは見れないけど、/test2は見れる。document通りなら/test2も見れないと思うんだけど。テスト用に一から書いたhttpd.confだから他に余計な設定入ってないしなー。何か勘違いしてるんだろうか。
おまけ
LocationじゃなくてLocationMatchで
<LocationMatch ^/test > deny form all </LocationMatch>
と書けば/testだけじゃなくて、/test2も制限される。まー正規表現で書いてるんだから、これは当然だと思うけど。