2012-05-08 79 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