什么可以阻止Apache重定向。导致这些重定向的原因是什么?

时间:2017-06-06 16:11:36

标签: apache .htaccess mod-rewrite

什么可以阻止Apache重定向。导致这些重定向的原因是什么?

的.htaccess

RewriteEngine On
RewriteBase /
Options -MultiViews
DirectoryIndex /public/index.php

RewriteCond %{HTTPS} off 
RewriteRule ^https://somedomain.com%{REQUEST_URI} [NE]

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{ENV:REQUEST_FILENAME} !-d
RewriteCond %{ENV:REQUEST_FILENAME} !-f
RewriteCond %{ENV:REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ https://%{HTTP_HOST}/public/index\.php?url=$1 [QSA,R=301,L]

使用somedomain.com/login 我得到了ERR_TOO_MANY_REDIRECTS

https://somedomain.com/public/index.php?url=public/index.php&url=public/index.php< ...>

我相信L应该停止重定向?不是吗?

1 个答案:

答案 0 :(得分:1)

  

我相信L应该停止重定向?不是吗?

L不会停止重定向。 L标记(最后一个)只是停止当前mod_rewrite循环并导致mod_rewrite规则从开始再次循环,因此它在continue循环中与while一样工作。< / p>

您必须从上一个路由规则中删除http://R=301标记,以避免外部重定向。

Options -MultiViews
DirectoryIndex index.php
RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} off 
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]

RewriteCond %{ENV:REQUEST_FILENAME} !-d
RewriteCond %{ENV:REQUEST_FILENAME} !-f
RewriteRule ^t/(.*)$ public/index.php?url=$1 [QSA,L,NC]

确保在测试此更改之前清除浏览器缓存。