2011-07-29 95 views
0

我想強制瀏覽器重定向到HTTPS始終如果有人類型:的mod_rewrite的.htaccess HTTPS

http://www.mydomain.com/user 
or 
http://www.mydomain.com/user/ 

上述兩個2個鏈接應該重定向到:https://www.mydomain.com/user

眼下第二到代碼底線正常工作:

RewriteRule ^user$ https://www.mydomain.com/user/ [R,QSA] 

將瀏覽器確實重定向到HTTPS,但如果http://www.mydomain.com/user/輸入,那麼它不會重定向到HTTPS。我怎樣才能做到這一點?

Options +FollowSymLinks 
RewriteEngine on 
RewriteBase/

RewriteCond %{HTTP_HOST} ^mydomain.com [NC] 
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [L,R=301] 

RewriteRule ^user$ https://www.mydomain.com/user/ [R,QSA] 
RewriteRule ^user/$ public/index.php?var1=x&var2=y [L,QSA] 

回答

2

使用這些規則:

Options +FollowSymLinks 
RewriteEngine on 
RewriteBase/

# force www domain name 
RewriteCond %{HTTP_HOST} ^mydomain.com [NC] 
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [L,R=301] 

# force HTTPS for some pages 
RewriteCond %{HTTPS} =off [NC] 
RewriteRule ^user/?$ https://www.mydomain.com/user/ [R=301,L] 

RewriteRule ^user/$ public/index.php?var1=x&var2=y [L,QSA] 

它會重定向到HTTPS:

  • 如果HTTP是當前協議(所以如果已經在HTTPS上沒有重定向)
  • 無論是否存在斜線存在:/user/user/都會完成這項工作(但如果/user/something-here將被請求,將不會執行任何操作)。 。
+0

謝謝@LazyOne這正是我正在尋找,我現在明白爲什麼因爲「?」標記使它不合格修改。 – ninu

0

這個怎麼樣...

RewriteRule ^user/(.+)/?$ public/index.php?var1=x&var2=y [L,R=301] 
RewriteRule ^user/?$  https://www.mydomain.com/user/ [L,QSA] 
RewriteRule ^(.*)/?$  http://www.mydomain.com/$1 [L,R=301] 
+0

所以,在一個無限循環結束了,瀏覽器停止:(你基本上得到: http://www.mydomain.com/https:/www.mydomain.com/login/作爲消息在Safari中,當我剛剛測試時, – ninu

+1

這有什麼更好的嗎? – neokio

+0

是的,這是給我一個內部服務器錯誤 – ninu