2017-04-04 65 views
0

我们有一个HTTP> HTTPS重定向我们的“顶”级:保留请求的协议中的子目录.htaccess的

example.com/top/ 

现在为/顶子目录/:

example.com/top/sub/ 

我想保留那里要求的协议。

所以,如果它是http://example.com/top/sub/this.php我希望它留下来作为“HTTP”

而如果它的https://example.com/top/sub/this.php我希望它留下来作为“HTTPS”

目前我在/顶.htaccess文件/子/目录中:

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

这是做什么我需要它是干什么的,所以在所有的请求的条件被发送到子目录它是完美的。

的问题是我收到的报告的error_log此错误消息:

[REWRITE] detected external loop redirection with target URL: http://example.com/top/sub/this.php, skip. 

我明白为什么我得到这个消息,因为每一个HTTP请求发出一次它匹配这个条件,我只是不知道如何阻止它。我尝试使用'END'参数强制只有一个重定向 - 但这似乎并没有工作,或至少不按照我预期的方式工作。

我只想让协议与请求的/ top/sub /保持一致 - 问题在于/ top/redirect将所有内容发送到HTTPS。

这可能吗?

回答

0

我很想知道是否实际上有一种方法来保存协议而不创建一个循环,但是我能够通过调整/ top /中的重定向来仅实现重定向页面't match/top/sub/- 我真的应该早就想到这个解决方案。

希望可以帮助别人。