我的问题:
我的网站包括根文件夹中的一些文件,以及在我的htaccess中设置的受密码保护的子文件夹。当我尝试访问子文件夹时,它会提示我输入密码,这是应该的。然而,它会提示我输入两次密码,在输入两次正确的密码后,它会抛出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"
这是子文件夹的htaccess:
#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的触发方式有关-您是否定义了自定义404文档?您是否有任何其他.htaccess
指令?(
您需要:
-
在上述规则中包含一个附加条件以排除目录。例如:
RewriteCond %{REQUEST_FILENAME} !-d
-
或者,在
/subfolder/.htaccess
文件中,禁用重写引擎,这样就不会处理父.htaccess
文件中的mod_rewrite指令。尽管这可能不可取。RewriteEngine Off