2013-03-07 62 views
0

我發現了很多像這樣的問題,並嘗試幾乎所有,但失敗。我最最新的代碼是:重定向只有一些網頁從http到https

RewriteCond %{HTTPS} !^on$ 
RewriteCond %{REQUEST_URI} (/page_1|/page_2|/page_3|/page_3)$ 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L] 

我想重定向HTTP到HTTPS只對那些網頁(PAGE_1 - page_4)

最初,它似乎是工作,但我到了一起PAGE_1 HTTPS和點擊任何其他(比如說page_my_http_1)鏈接,該鏈接不應該是https它也會重定向到該頁面的https(page_my_http_1)。

我也試過:

RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} (auth|register|secure) 
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301] 

RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_URI} !(auth|register|secure) 
RewriteRule ^(.*)$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301] 

或有任何的方式來顯示自定義消息,如果用戶在他們的瀏覽器沒有被激活SSL證書?

實際上,很多非技術用戶在瀏覽器顯示默認警告消息時會感到震驚。

+0

這不是沒有激活SSL的用戶,它是你的服務器必須保存有效的證書。我猜你在HTTPS頁面上混合了HTTPS和HTTP請求;這會向用戶顯示警告消息,因爲HTTP請求未加密。我認爲您可以使用* HTTP \ _REFERER *字段將HTTP請求重定向到HTTPS。理想情況下,如果您的應用程序中的路徑更適合使用哪種協議 – kjetilh 2013-03-08 11:43:52

回答

0

我改變你的例子只是略有下降,但基本上只是工作

RewriteEngine on 

RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} ^/(?:auth|register|secure)$ 
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R] 

RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_URI} !^/(?:auth|register|secure)$ 
RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R] 

我加了^$/,否則像nosecureauthority的請求將被redireted以HTTPS爲好。

從未使用301啓用測試,請參閱此答案Tips for debugging .htaccess rewrite rules以瞭解詳細信息。

+0

老闆不起作用 – 2013-03-08 10:49:59

+1

@PHPFerrari什麼都行不通? – 2013-03-08 11:50:12

+0

@PHPFrarari:請記住,如果某件事不起作用,您需要_explain_您想要發生的事情以及實際發生的事情。如果你只是使用短語「不起作用」,那麼你沒有提供任何有用的信息來回應,這迫使你的對話者問(如這裏)。 – halfer 2013-05-01 15:43:34