基本認証で完全にロックダウンされているWebサーバーがあります
<Location />
AuthType Basic
# [...] rest of basic auth stuff
require valid-user
order deny,allow
deny from all
Satisfy any
</Location>
1つのサブディレクトリに認証なしでアクセスできます。
<Location /public>
allow from all
Satisfy any
</Location>
これは正常に機能しています。ここで、mod_rewriteでアクセスされるいくつかのスクリプトにログインせずにアクセスを許可したいと思います。
RewriteRule ^phonebook/show/(.+)$ /quicksearchShow.php?uid=$1 [NC]
RewriteRule ^phonebook/(.+)$ /quicksearch.php?s=$1 [NC]
RewriteRule ^phonebook$ /quicksearch.php [NC]
私が試したいくつかの方法:
<Location ~ "/phonebook*">
Allow from all
Satisfy Any
</Location>
<Location /phonebook>
Allow from all
Satisfy Any
</Location>
<LocationMatch "^phonebook.*">
Allow from all
Satisfy Any
</LocationMatch>
これらのオプションはどれも機能しません。 /phonebook
はサーバー上の実際のディレクトリではないためだと思います。そこで、<Files>
ディレクティブのいくつかのバリエーションを試しました。
<FilesMatch "/quicksearch.*">
Allow from all
Satisfy Any
</FilesMatch>
<FilesMatch "^quicksearch.*">
Allow from all
Satisfy Any
</FilesMatch>
<Files "quicksearch.php">
Allow from all
Satisfy Any
</Files>
しかし、運もありません。
では、mod_rewriteを介してマップされる特定の「仮想」ディレクトリのオプションを設定するにはどうすればよいですか?
だから、私はちょっとこのアプローチをあきらめました。サブディレクトリ「phonebook」を作成し、そこにファイルを移動して、これをApache構成に追加しました。
<LocationMatch "^/(css|js|images|icons|phonebook)/">
Order Deny,Allow
Allow from All
Satisfy Any
</LocationMatch>
これは機能しますが、ファイルシステムにディレクトリが存在しないと機能しませんでした。