在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证书。如果通配符证书有效,则上述内容不会成为问题。
答案 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]