2014-11-01 130 views
0

我知道那裏有其他頁面覆蓋https到http,但它們似乎都主要覆蓋整個站點。將一個特定的https請求重定向到http

基本上我想要做的是......我們有一部分我們的網站是通過https服務的,​​但是在它的頭部中包含一個搜索字段,這個字段目前指向http,但這是造成一個警告圖標在Chrome中,所以我們需要將其更改爲https

它指向的搜索頁面沒有設置爲通過https提供服務,所以我們只是想將任何https請求重定向到相應的http

因此,例如:

https://www.example.com/search.php 

被重定向到:

http://www.example.com/search.php 

...和:

https://www.example.com/search.php?term=foo&cat=bar 

重定向到:

http://www.example.com/search.php?term=foo&cat=bar 

我在讀this page,但仍不確定如何正確地做到這一點。

而且,不是100%肯定凡在我目前的.htaccess文件,把它,這是我們當前文件:

RewriteEngine On 

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ 
RewriteRule . %1/%2 [R=301,L] 

RewriteRule ^(.*),(.*)$ $2.php?rewrite_params=$1&page_url=$2 

RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR] 
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR] 
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR] 
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2}) 
RewriteRule ^(.*)$ index.php [F,L] 

RewriteRule ^stores/([0-9a-z.-]+)/?$ shop.php?shop_id=$1 [L,QSA,NC] 
RewriteRule ^stores/([0-9a-z.-]+)/ajax_files/watch_item\.php$ ajax_files/watch_item.php [L,QSA,NC] 
RewriteRule ^stores/([0-9a-z.-]+)/ajax_files/save_field\.php$ ajax_files/save_field.php [L,QSA,NC] 
RewriteRule ^stores/([0-9a-z.-]+)/images/form-cb-icons\.png$ images/form-cb-icons.png [L,NC] 

RewriteRule ^group-break/([0-9]+)/[0-9a-z.-]+/?$ group_break.php?cb_id=$1 [L,NC] 
RewriteRule ^group-breaks/([a-z]+)-[a-z-]+/?$ group_breaks.php?tab=$1 [L,NC] 

RewriteRule ^afltcc$ /register.php?partner_id=100 [L,NC] 

是否可以在任何地方放?

回答

1

您可以使用此規則將請求(HTTPS)search.php重定向到它的(HTTP)search.php以及請求中的所有查詢參數。

RewriteCond %{HTTPS} =on 
RewriteRule ^search.php$ http://%{HTTP_HOST}/search.php [R=301,L] 

我建議把這個上面你的.htaccess

+0

那如何做所有的查詢參數,以及所有的非redirectional重寫規則?我認爲你需要在那裏添加'QSA'? – Brett 2014-11-01 07:08:49

+2

如果目標中沒有「?」,查詢字符串將作爲**原樣傳遞給目標URL。這裏不需要QSA。 – anubhava 2014-11-01 07:10:53

+1

@Brett不需要。只有當您在重定向中添加新的查詢參數時才需要。 [閱讀此更多解釋](http://stackoverflow.com/a/26410477/2745300) – kums 2014-11-01 07:13:07

相關問題