2017-10-08 169 views
0

我已將我的網站重定向到https,但我需要它將單個頁面從https重定向到http。如何將單個頁面從https重定向到http

我的規則來重定向到HTTPS是:

RewriteCond %{HTTPS} off 
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

    RewriteCond %{HTTP_HOST} !^www\. 
    RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

我可能會用什麼規則來重定向一個頁面到http?

+0

這個問題被一次又一次地問。總而言之,要做的更好的事情就是修改你想重定向的原因,而不是實際上使你的服務不安全或被破壞。 – arkascha

+0

@arkascha因爲在這個頁面我需要使用一個不適用於ssl – kb8

+0

的外部部件是的,包括外部的東西是這種嘗試的通常原因。位不能通過重定向工作,瀏覽器將拒絕遵循這樣的重定向。您需要通過您的服務代理該資源。 – arkascha

回答

0

我看了,這裏是幾年前有類似問題的答案。

嘗試%{SERVER_PORT}(如果默認http端口仍然是80和SSL端口是443)

RewriteEngine On 
RewriteBase/

RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} !^/blog_rss\.php$ [NC] 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L,QSA] 

RewriteCond %{SERVER_PORT} 443 
RewriteRule ^(blog_rss\.php)$ http://%{HTTP_HOST}/$1 [R=301,L,QSA] 

原來的問題/在回答:301 redirect HTTPS to HTTP for a single page

+0

這不適用於嵌入頁面中的外部小部件。所有瀏覽器都會因爲很好的原因拒絕遵循這種重定向。 – arkascha

0

此代碼根據意見工作首先你的代碼不會趕上沒有wwww

RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
# the first two lines above will catch all http request so , nothing will 
# pass to the following 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

讓這樣的代碼:

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

排除spacific頁面添加此

RewriteCond %{HTTPS} off [OR] 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteCond %{REQUEST_URI} !^/your/path/to/pages$ 
RewriteRule^ https://www.yoursite.com%{REQUEST_URI} [L,R=301] 

注:清除瀏覽器緩存並對其進行測試。

更新:

RewriteCond %{HTTPS} on 
RewriteCond %{THE_REQUEST} my-page [NC] 
RewriteRule^ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

試試這個,這意味着捕獲任何請求包含然後https &你的頁面強行進入http

+0

似乎無法正常工作 – kb8

+0

你是否適應或修改了你的代碼? –

+0

對不起,我錯過%{REQUEST_URI}之前立即嘗試 –

相關問題