添加尾随反斜杠导致错误500

时间:2016-08-05 17:19:18

标签: php apache .htaccess mod-rewrite url-rewriting

在URL的末尾添加一个尾部反斜杠会导致错误500,即/ forum /。输入/ forum时,/forum.php按预期加载到浏览器上。检查错误日志文件后,它会显示

  

由于可能,请求超出了10个内部重定向的限制   配置错误。使用'LimitInternalRecursion'来增加   必要时限制。使用“LogLevel debug”获取回溯。

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(admin|user)($|/) - [L]


#RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f

RewriteRule ^(.*)$ $1.php [L]
RewriteRule ^([A-Za-z0-9-_]+)$ /index.php?view=$1 [L]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ index.php?view=$1&page=$2 [L]

如果我添加反斜杠'?/',/论坛会加载索引页面,/ forum /会加载/forum.php

RewriteRule ^(.*)?/$ $1.php [L]

我哪里出错了?提前谢谢。

1 个答案:

答案 0 :(得分:0)

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L]

如果请求的文件存在,此RewriteCond条件应防止重写。在您的情况下,/forum将被重写为/forum.php,然后重写的请求将被传回URL解析引擎,该引擎将发现/forum.php存在,并且此规则将不再被执行。

当您请求/forum/时,它会被重写为/forum/.php,但它不存在,因此会被重写为/forum/.php.php等。如果您启用了重写{{{}},您可以在错误日志中查看此内容3}}

快速解决方法是用此删除trailin斜杠(将其放在RewriteBase /下面:

RewriteRule ^(.*)/$ /$1 [NC,L]