确定,这是未成功尝试找到答案的第7天,为什么出现401错误...
现在,根文件夹中的.htaccess仅包含3个字符串(已简化),并且项目中没有其他.htaccess文件:
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
因此,它将所有请求重定向为https。它适用于所有url,甚至适用于/ administration目录。
所以,
http://mydomain.com
成为
https://mydomain.com
如果输入https://mydomain.com
,则没有重定向。
http://mydomain.com/administration/index.php
成为
https://mydomain.com/administration/index.php
如果输入https://mydomain.com/administration/index.php
,则没有重定向。
很明显,问题在下面。
我希望/ administration目录受密码保护。我的共享主机控制面板允许保护目录,而无需手动创建.htaccess和.htpasswd(您选择要保护的目录,创建用户名和密码,并自动创建.htaccess和.htpasswd)。因此,.htaccess出现在/ administration文件夹中。 .htpasswd出现在其他地方,.htpasswd的路径是正确的,并且一切看起来都是正确的(它的工作方式与手动创建它的方式相同)。因此,项目中有2个.htaccess文件,一个在根目录中,一个在/ administration目录中(.htaccess目录中的.htpasswd知道它在哪里)。
创建密码后,结果是:
您输入:
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)
由于未知原因,甚至不要求输入密码。 为什么?
我已就此问题与客户支持联系,他们确定问题出在.htaccess文件中,并且它们无法修复.htaccess文件(很明显,它们没有,我不介意)。
为什么会这样?我是否忘记在.htaccess文件中放置一些标志或某些选项来更改默认设置?
P.S。为文件夹/ administration手动创建.htaccess和.htpasswd(不是从控制面板托管)会导致相同的401错误,如果不是https,而是输入了http。
并且该问题仅出现在/ administration目录的URL中。
谢谢。
尝试改用它。不是L和R标志。
我想我找到了一个更好的解决方案!
我对上述解决方案不满意,所以我提出了另一个解决方案:
这是一种类型,要在Apache上没有框的情况下进行故障排除有点棘手,但是我think