【发布时间】:2014-12-25 04:24:23
【问题描述】:
我为内部 Web 服务器购买了 SSL 证书,它仅在我使用服务器的 FQDN 时才有效。有没有办法在 httpd.conf 中使用重写规则来完成这个?我已经有两条规则,它们是:
RewriteCond %{HTTP_HOST} !^web2\.internal\.domain\.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^/(.*) https://web2.internal.domain.com/$1 [L,R]
RewriteCond %{HTTP_HOST} ^web2\.internal\.domain\.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^/(.*) https://web2.internal.domain.com/$1 [L,R]
我使用这些来强制 http 到 https,一个用于短名称,一个用于 FQDN。
谢谢
【问题讨论】:
-
看来您的最终目标是让所有到此 Web 服务器的流量都在
https://web2.internal.domain.com提供服务。这个对吗?如果是这样,这两个规则可以合并为一个并通过仅检查 (a) 如果端口是 80or(b) 如果域不是 FQDN 来简化。如果其中任何一个为真,则重定向到 https 和 FQDN。有没有我遗漏的其他复杂性? -
@David - 可能会让人毛骨悚然,但 FQDN 以点结尾。所以
www.和www.example.com.都被认为是完全合格的。事实上,我经常用它来做一些事情,比如使用https://wiki.和https://wiki.example.com连接到专用网络中的服务器 -
同意我可以简化重写规则,但如果 web2..... 是在浏览器中输入的,我无法让它们工作。使用 http://..... 一切正常。我错过了什么吗?还有,感谢您的帮助。
-
换句话说,重写规则仅适用于 http 到 https。当我使用 https 和非 FQDN 时不起作用。
标签: apache