2012-05-08 247 views
4

我在httpd.conf一个443端口和两个虚拟主机一个80端口:重写规则

<VirtualHost IPADDRESS:80> 
</VirtualHost> 

<VirtualHost IPADDRESS:443> 
</VirtualHost> 

现在我想重定向每一个请求到我的服务器请转至https://www.mysite.com/,但http://www.mysite.com/blog/除外我希望该博客为非SSL。我应该把RewriteRules放在哪个virtualHost指令中?我需要什么样的规则?

回答

7

在端口80 VirtualHost中,规则会将所有不是博客的内容重写为SSL。在443主机,它将改写博客请求非SSL(如果你想迫使他们回到非SSL)

<VirtualHost IPADDRESS:80> 
    RewriteEngine On 

    # Rewrite everything except the blog to SSL 
    RewriteCond %{REQUEST_URI} !^/blog 
    RewriteRule (.*) https://www.example.com/$1 [L,R,QSA] 
</VirtualHost> 

<VirtualHost IPADDRESS:443> 
    RewriteEngine On 

    # Rewrite the blog back to plain http 
    # Leave this out if you don't care that https requests to the blog stay 
    # on ssl 
    RewriteRule ^(blog*) http://www.example.com/$1 [L,R,QSA] 
</VirtualHost> 
+0

在你443的配置,'重写规则^(/博客/.*)HTTP: //www.example.com$1 [L,R,QSA]'可能更简单。但这是挑剔的 – nikoshr