0
我想將舊的https
頁面重定向到新的http
頁面。我試過這個規則幾次,但它不起作用:將單個https頁面重定向到另一個http頁面
RewriteRule ^https://www.mydomain.com/tc/page.html$ http://www.mydomain.com/index.php [L,R=301]
任何一個知道什麼是問題?
我想將舊的https
頁面重定向到新的http
頁面。我試過這個規則幾次,但它不起作用:將單個https頁面重定向到另一個http頁面
RewriteRule ^https://www.mydomain.com/tc/page.html$ http://www.mydomain.com/index.php [L,R=301]
任何一個知道什麼是問題?
你重寫規則是這樣的:
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:
場證實了這一規則的作品如預期。
我相信你需要在你的規則中添加'RewriteCond%{HTTPS}'條件。 – anubhava
@anubhava注意。謝謝! – JakeGould
+1這個答案應該可以正常工作 – anubhava