web-dev-qa-db-ja.com

仮想サブディレクトリでApache基本認証を無効にする

基本認証で完全にロックダウンされている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を介してマップされる特定の「仮想」ディレクトリのオプションを設定するにはどうすればよいですか?

4

だから、私はちょっとこのアプローチをあきらめました。サブディレクトリ「phonebook」を作成し、そこにファイルを移動して、これをApache構成に追加しました。

<LocationMatch "^/(css|js|images|icons|phonebook)/">
    Order Deny,Allow
    Allow from All
    Satisfy Any
</LocationMatch>

これは機能しますが、ファイルシステムにディレクトリが存在しないと機能しませんでした。

1