网站https重定向不起作用,也需要.php排除

时间:2015-01-16 16:51:02

标签: php html .htaccess redirect

我的目标是使用EV SSL将我网站上的所有.HTML页面的htaccess重定向到https,但是,我在DW CS6中创建了网站,并且大多数(超过1,000)的页面都是.php而不能https,因为它们都是来自EMC,VMware等的联合内容供稿。我还为所有.php页面构建了数十个深层链接。

通过此处的所有页面进行广泛搜索,提供了最佳和最合理的解决方案。

步骤1.首先将整个站点重定向到https

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} Off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTP_HOST} !^\.php$ [NC]
RewriteCond %{HTTPS} Off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

然后

第2步。

RewriteCond %{HTTP_HOST} !^\.php$ [NC]
RewriteCond %{HTTPS} Off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

问题是我从来没有测试过第2步,因为第1步不起作用,网站仍然是http://www.erpsaa.com/但当然如果你只是添加“s”https://www.erpsaa.com/这是我的目标,它完美的工作,如果你点击任何深层链接.php页面,它也可以工作,直接回到http。然而,然后将整个站点踢回http。我有我认为是第2步的部分解决方案.parent.php链接有效,因为整个站点重定向(手动)4 .php父母被破坏,SSL给出“混合内容问题”。我可以设置它,以便没有链接是父.php,但使所有链接深层链接,并达到相同的目的。但是,我仍然留下了我在这里发现的问题,不止一个人确认的是将一个人的整个站点从http重定向到https的确切方法。也许在我的整体情况下,整个网站的301代码更好,带有.php页面的bandaid,其深层链接总是强制https到http。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您无法使用php变量(仅用于匹配域)与%{HTTP_HOST}扩展名匹配。

您可以使用:

Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteCond %{HTTPS} Off
RewriteRule !\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,NE,NC,L]