パスワードで保護されたサブフォルダーはパスワードを2回要求し、404エラーをスローします

Nov 11 2020

私の問題:

私のウェブサイトは、ルートフォルダー内のいくつかのファイルと、パスワードで保護されたサブフォルダーで構成されており、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

どんな助けでも大歓迎です!

回答

MrWhite Nov 11 2020 at 23:36
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