如果我向服务器添加SSL证书,我是否需要修改此模块重写代码?


Do I need to modify this mod-rewrite code if I add an SSL certificate to my server?

这是我去年问的关于设置mod重写的问题的后续问题:http://bit.ly/h8PVd9

我在我的服务器上有以下mod重写,强制所有流量使用完整的URL (为了这个问题,我将使用www.mysite.com)。它工作正常,没有问题:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www'.mysite'.com$ [NC]
RewriteCond %{HTTP_HOST} !^dev'.mysite'.com$ [NC]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [L,R=301]

所以这一切都很好,但是我需要向服务器添加SSL,覆盖域www.mysite.com。什么(如果有的话)修改/异常我需要添加到我的预先存在的重写代码,以确保任何调用https://www.mysite.com不会被重定向到http://www.mysite.com?我需要修改什么吗?

我不是一个重写专家,但我认为下面的内容会有用。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^www'.mysite'.com$ [NC]
RewriteCond %{HTTP_HOST} !^dev'.mysite'.com$ [NC]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [L,R=301]

经过测试和咨询我的主机,这个问题的答案是:

RewriteCond %{HTTPS_HOST} ^mysite.com [NC]
RewriteRule ^(.*)$ https://mysite.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^mysite.com [NC]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301,L]

第一个规则处理所有到服务器的https请求,并允许它们通过,而不会被我的原始规则重定向。第二个是重写我的原始规则,并解决了强制使用www.mysite.com的问题,无论用户键入什么。

@Paul -你非常接近这个问题,但我现有的重写这个解决方案解决了两个问题。