【发布时间】:2013-06-08 22:47:39
【问题描述】:
我目前正在使用 htaccess 来强制我的 apache2 服务器上的所有 http 请求转到 https。 https已设置并正常工作。如果我只使用基本域名(例如:http://mydomain.com),htaccess 重写正在工作,但是如果我执行http://mydomain.com/index.php 之类的操作,我会收到 401 错误,说我没有被授权。我应该提到我的 htaccess 还使用 htpasswd 文件将所有内容限制为授权用户。
如果不使用 http -> https 的重写,只要该人登录,http 和 https 都可以使用任何 url 正常工作。如果不是,它将要求他们登录。当我将重写放回其中不要求用户登录,只是显示一个 401 错误页面。
这是我的 htaccess 文件:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
AuthName "Enter Account Info... Or your computer will blow up!!!"
AuthType Basic
AuthUserFile /<censored>/.htpasswd
AuthGroupFile /dev/null
require user <censored>
没有那些重写行,一切正常。对 http 或 https 的请求将正常运行,但对基域以外的任何内容使用重写似乎在某处中断。
我尝试了各种我在网上找到的重写规则,都给出了相同的结果,对于基本 url 工作正常,而不是直接页面链接。
【问题讨论】:
-
目前我已经更改了 htaccess 并删除了重写规则,而是使用..
if($_SERVER["HTTPS"] != "on")将其放置在我的 php 代码中的几个关键位置 .... 这种方式似乎有效对于我在网站上使用的任何网址,包括 http 和 https。如果我最初使用 http,它确实会强制双重登录,但目前这是可以接受的。
标签: .htaccess mod-rewrite https apache2 .htpasswd