使用.htaccess将http重定向到https时,某些网址出现奇怪的401错误

问题描述 投票:10回答:4

确定,这是未成功尝试找到答案的第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中。

谢谢。

http .htaccess mod-rewrite https http-status-code-401
4个回答
15
投票

尝试改用它。不是L和R标志。


3
投票

我想我找到了一个更好的解决方案!


0
投票

我对上述解决方案不满意,所以我提出了另一个解决方案:


0
投票

这是一种类型,要在Apache上没有框的情况下进行故障排除有点棘手,但是我think

© www.soinside.com 2019 - 2024. All rights reserved.