![将规则 HTTPS 重写到不同的端口](https://linux22.com/image/528620/%E5%B0%86%E8%A7%84%E5%88%99%20HTTPS%20%E9%87%8D%E5%86%99%E5%88%B0%E4%B8%8D%E5%90%8C%E7%9A%84%E7%AB%AF%E5%8F%A3.png)
我有一个在端口上运行 SSL 的 Apache444。我需要将所有以https://servername
( 即默认端口 443) 开头的 url/请求重写为https://servername:444
。
我对 .htaccess 有这样的规则:
RewriteCond %{SERVER_PORT} =443
RewriteRule ^(.*)$ https://%{SERVER_NAME}:444%{REQUEST_URI}
这不起作用。为了检查条件,我将条件端口更改为RewriteCond %{SERVER_PORT} =80
,所有 HTTP 请求都强制为 HTTPS。
答案1
如果我理解正确的话,你的问题是%{SERVER_PORT}
永远不会等于 443,因为你的服务器没有监听该端口。因此,你的RewriteCond %{SERVER_PORT}=443
条件永远不会成立。
事实上,我认为不可能按照您的意图进行重写,除非您放置一个在端口 443 上监听的服务器来处理初始传入请求,然后立即将其重定向到端口 444。但如果您这样做,您最好根本不要重定向;只需处理 443 上的 HTTPS 请求即可。