我想将旧的https
页面重定向到新的http
页面。我已经多次尝试过这个规则,但它不起作用:
RewriteRule ^https://www.mydomain.com/tc/page.html$ http://www.mydomain.com/index.php [L,R=301]
任何人都知道这是什么问题?
答案 0 :(得分: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]
问题是当您尝试匹配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:
字段确认此规则按预期工作。