我正在尝试使用 laravel 构建网站,但我的路由全部重定向到主页。Apache 错误日志显示了此情况
AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
.htaccess 文件如下
<IfModule mod_rewrite.c>
Options -MultiViews
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
webroot 有多个子文件夹,它们是不同域的文档根目录。我正在使用其中一个子文件夹。
导致此错误的原因是什么以及如何修复
答案1
当 RewriteRule 在目录上下文(.htaccess 文件)中匹配时,结果替换会在子请求中重新提交。
所以发生的情况是,当您请求“foo”时,它会被重写为 index.php/foo,然后它会作为子请求重新提交,再次匹配并重写为 index.php/index.php/foo 等,直到达到最大内部重定向限制。
为什么不使用 laravel 自带的 .htaccess 文件?这个使用:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^index.php [L]
</IfModule>
这不应该导致循环。