Php 重写规则的结果是';未找到页面';在https页面上

Php 重写规则的结果是';未找到页面';在https页面上,php,apache,mod-rewrite,https,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虚

在我的网站上,我有多种重写规则,如下面的规则

 ^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虚拟主机下添加重写规则副本来解决这个问题。假设您的Apache在标准端口上提供HTTPS服务,您可以在规则之前添加一个条件:

RewriteCond %{SERVER_PORT} =443
RewriteRule ...
编辑:还有一个变量,您可以检查(它也在中):

HTTPS

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

因此,无论在哪个端口上提供SSL,这都应该更好:

RewriteCond %{HTTPS} =off
RewriteRule ...
您可以尝试:

RewriteCond %{HTTPS} on

请查看

RewriteCond%{HTTPS}=off或RewriteCond%{SERVER_PORT}=443帮助。当点击eg[https]://product/jewellery/ringsHm时,我仍然会发现“找不到”。然后,您需要发布整个规则集。可能还有别的问题。