重写规则最终会在https页面上找到“找不到页面”

时间:2012-02-16 15:18:15

标签: php apache mod-rewrite https

我有多个重写规则,如我网站上的那个

 ^product/([0-9a-zA-Z]+)/([0-9a-zA-Z]+)$ /index.php?action=product&category=$1&type=$2

我还安装了自签名ssl证书,并且有几页php重定向到https。当我在这样的https页面上并单击与上述重写规则匹配的链接时,我最终会找到“未找到”错误页面

如何告诉apache应该相对于http读取所有重写规则,而不是https?

编辑: 我通过在443虚拟主机

下添加重写规则的副本来对其进行排序

2 个答案:

答案 0 :(得分:0)

假设您的Apache在标准端口上提供HTTPS,您可以在规则之前添加条件:

RewriteCond %{SERVER_PORT} =443
RewriteRule ...

编辑:还有另一个变量,您可以检查(它也在documentation中):

  

HTTPS

     

如果连接使用SSL / TLS,则包含文本“on”,否则包含“off”。 (无论是否加载了mod_ssl,都可以安全地使用此变量。)

所以这应该更好,无论SSL交付哪个端口:

RewriteCond %{HTTPS} =off
RewriteRule ...

答案 1 :(得分:0)

您可以尝试:

RewriteCond %{HTTPS} on

查看htaccess HTTPS / SSL Tips, Tricks, and Hacks