php - 受密码保护的子文件夹两次提示密码然后抛出 404 错误
问题描述
我的问题:
我的网站包含根文件夹中的一些文件,以及在我的 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"
这是子文件夹的 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 的方式有关 - 您是否定义了自定义 404 文档?您还有其他.htaccess
指令吗? )
您需要:
在上述规则中包含一个附加条件以排除目录。例如:
RewriteCond %{REQUEST_FILENAME} !-d
或者,在文件中,禁用重写引擎,因此不处理
/subfolder/.htaccess
父文件中的 mod_rewrite 指令。.htaccess
尽管这可能是不可取的。RewriteEngine Off
推荐阅读
- typescript - react-navigation中的navigationOptions在打字稿中不起作用
- android - 我如何使列表视图消息单击并转到网站。消息中的网址?
- google-apps-script - 如何使用 Google Apps 脚本将左制表位添加到 Google Doc 中的 Paragraph 对象
- reactjs - 在 React 的子组件中找不到 SCSS 变量
- github - 一个组织中的存储库数量是否有限制?以及对一个回购中的分支的限制?
- c# - asp网格视图中如何设置分页排序过滤和编辑
- javascript - 如何在chrome中取消隐藏某些js文件中的消息
- c# - 根据列表框中的选择禁用winform按钮
- django - 如何在 Django 中提供动态图像?
- c++ - 使用 libcurl 和 Fiddler 拦截 HTTPS 流量