2011-04-20 22 views
0

這是一個後續的問題,我去年問有關設置MOD-重寫:http://bit.ly/h8PVd9如果我向服務器添加SSL證書,是否需要修改此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?我是否需要修改任何內容?

回答

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 - 你在這一個上非常接近,但與我現有的重新寫這個解決方案解決了這兩個問題。

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] 
+0

我不想在任何地方重定向任何人,事實恰恰相反!對不起,如果不明確。考慮到上面重寫的語法,我想確保對https頁面的安全調用不會重定向到不安全的http頁面。 – MindSculpt 2011-04-20 21:25:38

+0

好吧,我刪除了我的第二個例子。所以顯示的那個只會重定向,如果它是http。如果它是https,那麼它不會通過條件。 http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritecond – 2011-04-20 21:29:46

相關問題