httpd.conf将https://example.com重写为https://www.example.com

时间:2016-01-23 06:16:12

标签: apache .htaccess httpd.conf

在httpd.conf中,我在httpd.conf中编写了规则,以便从不安全重定向到安全,(例如,http://example.com - > https://www.example.com),

但是当网站已经https时你如何预先添加www?

例如,如果我转到我的浏览器并输入https://example.com,我找不到apache将其重写为https://www.example.com的方法。相反,我收到证书错误,因为我的证书仅适用于“www.example.com”域。

我目前的试用期是:

AllowOverride All
RewriteEngine On
# If www is not present:
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC,OR]
# ... or if https is not present:
RewriteCond %{HTTPS} off
# ensure www and https both present
RewriteRule .? https://www.example.com%{REQUEST_URI} [NC,L]

当我输入“https://example.com”(希望获得https://www.example.com的结果)

时,上面不会添加“www”

我认为发生了什么:我对https://example.com的初始请求会导致证书不匹配错误,然后才能对重定向执行操作。

方面问题:我无法让谷歌接受自签名* .example.com证书。如果通配符证书有效,则上述内容不会成为问题。

1 个答案:

答案 0 :(得分:0)

您需要使用R标志从非www重定向到www,以及在SSL上从非www重定向到www的额外规则。

AllowOverride All
RewriteEngine On
# ...if  https is not present:
RewriteCond %{HTTPS} off
# ensure www and https both present
RewriteRule ^ https://www.example.com%{REQUEST_URI} [NC,L,R]
#Redirect non-www to www on SSL
 RewriteCond %{HTTPS} on
 RewriteCond %{HTTP_HOST} !^www\.
 RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [NC,L,R]