godaddy 网站托管的 Mod_rewrite 问题

godaddy 网站托管的 Mod_rewrite 问题

我正在尝试使用 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>

这不应该导致循环。

相关内容