我为内部网络服务器购买了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。
由于
答案 0 :(得分:0)
根据您的评论,我认为问题是您的两个规则都会测试SERVER_PORT
= 80,以及您是否通过https访问哪些不匹配。以下是适用于您的案例的单个合并规则:
RewriteCond %{HTTP_HOST} !^web2\.internal\.domain\.com$ [NC,OR]
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://web2.internal.domain.com$1 [L,R]
这两个条件检查网站是否被其他域访问,例如只是“web2”,或,如果它是在完整域上访问,而是通过端口80(而不是SSL)访问。如果任一情况属实,则将用户重定向到具有完整域的https。