Apache HttAccess HTTPS和HTTP查询字符串重定向

Apache HttAccess HTTPS和HTTP查询字符串重定向,apache,.htaccess,redirect,mod-rewrite,Apache,.htaccess,Redirect,Mod Rewrite,我有一个关于.htaccess和重定向某些内容的问题 我目前有一个站点需要站点范围的HTTPS。这是通过.htaccess文件完成的 然而,我需要两样东西在HTTP上:/sage/和/index.php?route=ebay/openbay 目前,我为sage提供了以下功能,并且可以正常工作。没有循环,重定向工作正常 RewriteCond%{HTTP_HOST}^(www\.)?site\.co\.uk$[NC] ##检查是否使用https 在上重写cond%{HTTPS} ##如果是,请重定

我有一个关于
.htaccess
和重定向某些内容的问题

我目前有一个站点需要站点范围的HTTPS。这是通过
.htaccess
文件完成的

然而,我需要两样东西在HTTP上:
/sage/
/index.php?route=ebay/openbay

目前,我为sage提供了以下功能,并且可以正常工作。没有循环,重定向工作正常

RewriteCond%{HTTP_HOST}^(www\.)?site\.co\.uk$[NC]
##检查是否使用https
在上重写cond%{HTTPS}
##如果是,请重定向到http
重写规则^/?(sage)http://www.site.co.uk%{REQUEST_URI}[L,R]
##快乐的日子!它起作用了!
重写cond%{HTTP_HOST}^(www\)?site\.co.uk$[NC]
##让我们再次检查,但这次检查是否有剩余的http
重写条件%{HTTPS}关闭
##如果是这样,请将其重定向回https,除非sage位于起始位置。
重写规则!^/?(圣人)https://www.site.co.uk%{REQUEST_URI}[L,R]
##很好,除了在sage上,仍然有站点范围的https,任务完成了。
现在,我遇到了查询字符串行的问题

这就是我所拥有的,它被放置在htaccess中的上述代码下

RewriteCond%{QUERY\u STRING}route=ebay/openbay/[NC]
在上重写cond%{HTTPS}
重写规则(*)http://%{http_HOST}/$1[L,R]
重写cond%{QUERY_STRING}!路线=易趣/openbay/
重写条件%{HTTPS}关闭
重写规则(*)http://%{http_HOST}/$1[L,R,NC,QSA]
不仅如此,它还创建了一个带有这个和sage的重定向循环。我不知道为什么,我有点卡住了

我最初是从一篇旧文章中得到这个想法的:,希望我可以在括号中添加两个字符串,这样(
sage/index.php
etc)


我现在有点不知所措,所以我想是时候向全世界寻求帮助了。

你可以试试这个,看看它是否能帮你避免循环:

RewriteCond %{HTTPS} !on
RewriteCond %{REQUEST_URI} !^/sage/? [NC]
RewriteCond %{QUERY_STRING} !route=ebay/openbay/ [NC]
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} ^/sage/? [NC,OR]
RewriteCond %{QUERY_STRING} route=ebay/openbay/ [NC]
RewriteRule ^(.*) http://%{HTTP_HOST}%{REQUEST_URI} [R,L]

这确实解决了正在创建的循环,谢谢。