2014-06-13 246 views
0

我想將舊的https頁面重定向到新的http頁面。我試過這個規則幾次,但它不起作用:將單個https頁面重定向到另一個http頁面

RewriteRule ^https://www.mydomain.com/tc/page.html$ http://www.mydomain.com/index.php [L,R=301] 

任何一個知道什麼是問題?

回答

0

你重寫規則是這樣的:

RewriteRule ^https://www.mydomain.com/tc/page.html$ http://www.mydomain.com/index.php [L,R=301] 

它改成這樣:

RewriteRule ^tc/page.html$ http://www.mydomain.com/index.php [L,R=301] 

同時確保RewriteEngine設置爲On &有一個https檢查,以及:

RewriteEngine On 
RewriteCond %{HTTPS} on 
RewriteRule ^tc/page.html$ http://www.mydomain.com/index.php [L,R=301] 

問題是wh帶你嘗試匹配https://www.mydomain.com/tc/page.html它會嘗試在像這樣的具體路徑的頂部與域:

https://www.mydomain.com/https://www.mydomain.com/tc/page.html 

這是不正確,因爲這將永遠存在。另外,雖然我並不清楚你的桌面環境是什麼,但在測試這類東西時,通常最好不要相信瀏覽器。我強烈建議使用curl-I選項來返回請求的標題,以便完全測試它,而不會像這樣在瀏覽器怪癖中緩存&。

例如,我測試了這個規則我本地的Mac OS X MAMP設置是這樣的:

curl -I http://localhost:8888/tc/page.html 

並返回curl -I輸出爲:

HTTP/1.1 301 Moved Permanently 
Date: Fri, 13 Jun 2014 02:08:53 GMT 
Server: Apache/2.2.23 (Unix) mod_ssl/2.2.23 OpenSSL/0.9.8y DAV/2 PHP/5.4.10 
Location: http://www.mydomain.com/index.php 
Content-Type: text/html; charset=iso-8859-1 

Location:場證實了這一規則的作品如預期。

+1

我相信你需要在你的規則中添加'RewriteCond%{HTTPS}'條件。 – anubhava

+0

@anubhava注意。謝謝! – JakeGould

+1

+1這個答案應該可以正常工作 – anubhava

相關問題