微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

受密码保护的子文件夹两次提示输入密码,然后抛出404错误

如何解决受密码保护的子文件夹两次提示输入密码,然后抛出404错误

我的问题:

我的网站包括文件夹中的一些文件以及htaccess中设置的受密码保护的子文件夹。当我尝试访问子文件夹时,它会提示我输入密码。但是,它会提示我两次输入密码,并在两次输入正确的密码后提示404错误。如果我输入了错误的密码,它将继续要求输入密码。

输入密码后,我实际上已经登录,因为如果我尝试访问该子文件夹的特定部分(即myurl.com/subfolder/index.PHP),则可以访问它。但是显然,该网站不应该首先引发404错误

我尝试过的事情:

我已经看到其他人也有类似的问题,regarding password-protected sub-folders and 404 errors。但是,我的问题略有不同,因为我实际上要输入密码。因此,添加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"

这是子文件夹的处理方式:

#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
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。