这是我去年提出的关于设置模式重写问题的后续问题: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 ?我是否需要修改任何内容?
答案 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 - 你非常接近这个,但是通过我现有的重写,这个解决方案解决了这两个问题。