2014-09-13 389 views
1

我想所有的以下htaccess以及正則表達式爲重定向多個樣式

example.com 
http://example.com 
https://example.com 
http://www.example.com 

的重定向到

https://www.example.com 

我有這樣的:

RewriteEngine on 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
RewriteRule ^/(.*):SSL$ https://%{SERVER_NAME}/$1 [R,L] 


Options +FollowSymlinks 
RewriteCond %{HTTP_HOST} !^www.example.com 
RewriteRule ^(.*)$ https://www.example.com/$1 [R=permanent,L] 

這兩個以下是工作,

http://www.example.com 
https://example.com 

但最後一個顯示爲:

https://www.example.com/https://example.com/ 

我怎樣才能解決這個所以所有三個正確重定向到https://www.example.com

感謝您的幫助。通過

https://www.$1$2

觀看演示

回答

1

所有你想要可以在一個單一的規則就像這樣:

RewriteEngine on 

RewriteCond %{HTTPS} off [OR] 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule^https://www.example.com%{REQUEST_URI} [L,NE,R=301] 

確保這是你的根的.htaccess的第一個規則。

+1

是的!謝謝你,你第一次開箱即可釘上我的噩夢一天,對你的幫助是更好的 – AllThisOnAnACER 2014-09-13 19:13:53

+0

你非常歡迎,很高興它的工作。一天中有一個很好的休息。 – anubhava 2014-09-13 19:14:49

0
^(?:.*?:)?(?:\/\/)?(?:.*?\.)?(.*?\.)(.*)$ 

嘗試this.Replace。

http://regex101.com/r/lU7jH1/6

+0

謝謝你。嗯,因爲這些看起來都不像我原來的代碼,你想讓我堅持下去嗎? :-) 從演示中,它看起來正是我需要的,但我不想在我的.htaccess文件中犯太多錯誤。您能否更具體地使用我的原始代碼作爲開始? – AllThisOnAnACER 2014-09-13 18:48:21

+0

爲什麼選擇投票? – AllThisOnAnACER 2014-09-13 19:02:01

+0

只是因爲正則表達式能夠匹配給定的URL並不意味着這個正則表達式也適用於'mod_rewrite'。 – anubhava 2014-09-13 19:06:21

相關問題