1

コンテンツまたは 404 メッセージのいずれかを提供する PHP スクリプトに、存在しない URL (厳密には 404 エラーではない) を書き換える .htaccess を使用したきれいな URL セットアップがあります。CSS、画像などに影響を与えないように、既存のファイルとディレクトリをこの書き換えから除外しました。

ただし、.htpasswd によってパスワード保護されているディレクトリが 1 つあります。これも書き換えルールをバイパスする必要がありますが、.htpasswd が有効になっている場合はそうではありません。

親ディレクトリ .htaccess:

RewriteEngine On

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /callbacks.php [L]

次の .htaccess を持つ子ディレクトリがあります。

RewriteEngine on

Options All -Indexes

AuthName "Backstage Access" 
AuthType Basic 
AuthUserFile /path/to/.htpasswd
AuthGroupFile /dev/null 
require valid-user

この行を削除するrequire valid-userと、親ディレクトリの書き換えルールによって子ディレクトリが無視され、ブラウザからアクセスできるようになります。しかし、認証をオンにすると、親ディレクトリの .htaccess によって子ディレクトリが に書き換え/callbacks.phpられ、カスタム 404 エラーが発生します。

これを修正する方法についてのアイデアはありますか? 明らかに、パスワード保護の必要性を取り除くことはできません。親の書き換えルールを削除して、代わりに単純/callbacks.phpに 404 エラー ドキュメントとして使用しようとしましたが、POST および GET データは転送されません。

4

1 に答える 1

0

それがまだ実際のものかどうかはわかりませんが、同じ問題があり、修正を見つけました - htaccess に次の行を追加してください:

ErrorDocument 401 /somepage.html
ErrorDocument 403 /somepage.html

そして、これはリライタをバイパスするのに十分なはずです

于 2015-04-27T08:51:48.360 に答える