パスワードで保護されたサブフォルダーはパスワードを2回要求し、404エラーをスローします
私の問題:
私のウェブサイトは、ルートフォルダー内のいくつかのファイルと、パスワードで保護されたサブフォルダーで構成されており、htaccessに設定されています。サブフォルダにアクセスしようとすると、パスワードの入力を求められます。ただし、パスワードの入力を2回求められ、正しいパスワードを2回入力すると、404エラーがスローされます。間違ったパスワードを入力すると、パスワードを要求され続けます。
パスワードを入力した後、実際にログインしています。そのサブフォルダーの特定の部分(myurl.com/subfolder/index.phpなど)にアクセスしようとすると、アクセスできるからです。しかし、明らかに、サイトは最初に404エラーをスローするべきではありません。
私が試したこと:
パスワードで保護されたサブフォルダと404エラーに関して、他の人も同様の問題を抱えているのを見てきました。ただし、実際にパスワードを入力するようになるため、問題は少し異なります。したがって、追加の一般的な解決策でErrorDocument 401 "Authorisation Required"
は問題は解決されていません。
コード:
これはルートフォルダのhtaccessです。
#Redirects to the https version of site
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] ## Removes php extensions RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L]
#Allow password for subfolder
ErrorDocument 401 "Authorisation Required"
そして、これはサブフォルダーのhtacessです。
#Password for subfolder
AuthType Basic
AuthName "Password Protected Area"
AuthUserFile myurl/mysubfolder/.htpasswd
Require valid-user
どんな助けでも大歓迎です!
回答
RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L]
/subfolder
ディレクトリを要求すると(そして認証されると)、上記のmod_rewriteディレクティブ(ルート.htaccess
ファイル内)は.php
拡張子を追加します。/subfolder/.php
結果は404になります。
(これが上記の書き換えにも関連していない限り、またはおそらく404がトリガーされている方法に関連していない限り、パスワードの入力を2回求められる理由がわかりません-カスタム404ドキュメントが定義されていますか?他の.htaccess
ディレクティブはありますか? )。
次のいずれかを行う必要があります。
上記のルールに追加の条件を含めて、ディレクトリを除外します。例えば:
RewriteCond %{REQUEST_FILENAME} !-d
または、
/subfolder/.htaccess
ファイルで書き換えエンジンを無効にして、親.htaccess
ファイルのmod_rewriteディレクティブが処理されないようにします。これは望ましくないかもしれませんが。RewriteEngine Off