好的,这是尝试寻找 401 错误原因的失败尝试的第 7 天...
现在,
根文件夹中的 .htaccess 仅包含 3 个字符串(已简化),并且项目中不再有 .htaccess 文件:
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
因此,它将所有请求重定向为 https。它适用于任何 url,甚至适用于 /administration 目录。
So,
http://mydomain.com
becomes
https://mydomain.com
If https://mydomain.com
输入后,没有重定向。
http://mydomain.com/administration/index.php
becomes
https://mydomain.com/administration/index.php
If https://mydomain.com/administration/index.php
输入后,没有重定向。
这很清楚,问题在下面。
我希望 /administration 目录受到密码保护。我的共享主机控制面板允许保护目录,而无需手动创建 .htaccess 和 .htpasswd(您选择要保护的目录,创建用户名和密码,然后自动创建 .htaccess 和 .htpasswd)。因此,.htaccess 出现在 /administration 文件夹中。 .htpasswd 出现在其他地方,.htpasswd 的路径是正确的,并且一切看起来都是正确的(其工作方式与手动创建它相同)。因此,项目中有 2 个 .htaccess 文件,一个位于根目录,一个位于 /administration 目录(其中 .htpasswd 位于目录 .htaccess 知道它在哪里)。
创建密码后,
结果是:
您输入:
https://mydomain.com/administration/index.php
然后它要求输入密码。
如果输入正确的话https://mydomain.com/administration/index.php
被展示。结果:效果完美。
但是,如果你输入
http://mydomain.com/administration/index.php
(是的,http,没有S)
然后不是重定向到相同的 https 页面,
它重定向到
https://mydomain.com/401.shtml (starts with httpS)
由于未知原因,甚至不询问密码。Why?
我已经就这个问题联系了客户支持,他们确定问题出在 .htaccess 文件中,并且他们不修复 .htaccess 文件(很明显,他们不修复,我不介意)。
为什么会出现这种情况?
我是否忘记在 .htaccess 文件中放置一些标志或一些选项来更改默认设置?
P.S. 如果输入的不是 https,而是 http,则为文件夹 /administration 手动创建 .htaccess 和 .htpasswd(不是从托管控制面板)会导致相同的 401 错误。
仅当 URL 指向 /administration 目录时才会出现此问题。
谢谢。