将单个https页面重定向到另一个http页面

时间:2014-06-13 02:03:01

标签: apache .htaccess mod-rewrite

我想将旧的https页面重定向到新的http页面。我已经多次尝试过这个规则,但它不起作用:

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

任何人都知道这是什么问题?

1 个答案:

答案 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:字段确认此规则按预期工作。