如果我将SSL证书添加到服务器,是否需要修改此mod-rewrite代码?

时间:2011-04-20 20:35:56

标签: php .htaccess mod-rewrite ssl

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

我的服务器上有以下mod-rewrite强制所有流量使用完整的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 ?我是否需要修改任何内容?

2 个答案:

答案 0 :(得分:0)

我不是改写专家,但我认为下面会有效。

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]

答案 1 :(得分:0)

在测试并咨询我的虚拟主机后,这个问题的答案如下:

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 - 你非常接近这个,但是通过我现有的重​​写,这个解决方案解决了这两个问题。