2011-03-23 91 views
0

我已经做了足够的研究,以弄清楚,重定向整个站点的我所有的https网页他们的HTTP等价,我需要使用此代码...HTTPS在.htaccess到http例外

RewriteEngine On 
RewriteCond %{HTTPS} on 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

我的问题是,我仍然希望保留为https的页面句柄。为了举例,假设我想将page1.php,page2.php和page3.php保留为.https,并将网站上的所有内容重定向。有人知道怎么做吗?

回答

0

尝试这样:

RewriteEngine On 

# Force page1,2,3.php onto HTTPS 
RewriteCond %{HTTPS} off 
RewriteRule ^(page1|page2|page3)\.php https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA] 

# Redirect other HTTPS requests to plain HTTP 
RewriteCond %{HTTPS} on 
RewriteCond ${REQUEST_URI} !(page1|page2|page3)\.php 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA] 
+0

对不起,我这个总的新秀。这是否取代我的3重定向规则?一切都必须按特殊顺序进行吗?你能创建一个完整的.htaccess来总结一切吗?提前致谢! – Ryan 2011-03-23 19:31:44

+0

考虑以上是以正确的顺序完整的.htaccess。顶部的块用一个正则表达式替换你的三个谨慎的规则。我还为重定向标志添加了'QSA'来传递任何查询字符串。 – 2011-03-23 19:49:55

+0

这似乎会导致页面1,页面2和页面3的无限循环。 – Ryan 2011-03-24 10:00:55