我们正在尝试将端口 8555 上的请求重定向到端口 8443。在我们的 httpd.conf 文件中,我们有以下内容:
<VirtualHost *:8555>
SSLEngine on
# SSL configuration that is irrelevant to this question
RewriteEngine on
RewriteRule ^(.*)$ https://%{HTTP_HOST}:8443%{REQUEST_URI}
</VirtualHost>
但是,当用户访问 时https://example.con:8555/foo
,他们被重定向到https://example.com:8555:8443/foo
而不是https://example.com:8443/foo
。我该如何纠正这个问题?
答案1
HTTP_HOST
包含“Host:”请求标头设置的值。您可以尝试使用SERVER_NAME
包含指令值的替代方法ServerName
(如果已在 VirtualHost 块中配置)。否则 httpd 会尝试通过反向 DNS 查找 ServerName。
RewriteRule ^(.*)$ https://%{SERVER_NAME}:8443%{REQUEST_URI}
另一种选择是,如果您只有一个服务器名称,您可以直接将其写入 RewriteRule 中,而不必为此使用变量。
RewriteRule ^(.*)$ https://example.com:8443%{REQUEST_URI}