2015-02-23 88 views
0

我有一個規則,.htaccess設置添加一個結尾的斜線,但如果主機https,這使得它通過http重定向,但我不明白爲什麼:htaccess的重定向不保留協議

# add trailing slash 
RewriteCond %{REQUEST_URI} ^\/([A-Za-z0-9\-\/]*[A-Za-z0-9\-]+)$ 
RewriteRule .* /%1/ [R=301,L] 

因此,如果我要求​​它會觸發.htaccess中的規則來添加尾部斜線,但將我重定向到http://www.example.com/some/page/

如果一個頁面請求爲HTTPS: //www.example.com/some/page,爲什麼它上面重定向到HTTP規則: //www.example.com/some/page/ ?

如何在使用正確的主機重定向時添加尾部斜線?

+0

難道你不能只在你的重定向中添加一個結尾的斜槓嗎? – Blaatpraat 2015-02-23 12:32:31

+0

http://stackoverflow.com/questions/10489895/http-to-https-through-htaccess – caramba 2015-02-23 12:35:34

+0

可能的重複[你如何將HTTPS重定向到HTTP?](http://stackoverflow.com/questions/8371/how https-to-http) – 2015-02-23 12:36:42

回答

1

你爲什麼不只是修改規則如下:

RewriteCond %{REQUEST_URI} ^\/([A-Za-z0-9\-\/]*[A-Za-z0-9\-]+)$ 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI}/ [R=301,L] 

這也將強制使用HTTPS 這始終是一件好事。 :)

+0

,因爲代碼/ htaccess被衆多網站共享,其中一些需要通過「https」服務,一些是http http: – 2015-02-23 12:45:17

+0

您可以將它放在負責特定網站的子目錄中。 – 2015-02-23 12:50:35

+0

這不是一個真正可行的解決方案。可能有10個通過https服務的網站,這意味着要添加和維護10個獨立的'.htaccess'文件。我不明白爲什麼規則將'https'重定向到'http' – 2015-02-23 12:55:01