什么可以阻止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应该停止重定向?不是吗?
答案 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]
确保在测试此更改之前清除浏览器缓存。