【发布时间】:2014-04-21 09:59:04
【问题描述】:
我想从请求中删除扩展名并将其添加到服务器端,所以我将这段代码写在 .htaccess 文件中:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
此代码在标准使用中效果很好。例如,如果我在 HOME/foo/bar.php
中有文件
我像localhost/foo/bar 一样请求它,代码正在运行并将我重定向到正确的文件。
但是如果我的请求是localhost/foo/bar/(最后是反斜杠),或者localhost/foo/bar/a
我收到内部服务器错误 (500),在日志文件中我收到了Request exceeded the limit of 10 internal redirects。
我已经测试了代码,发现%{REQUEST_FILENAME} 忽略了请求的错误后缀/a,所以它只看到HOME/foo/bar,但RewriteRule $1 不会忽略它。
我的代码有什么问题?
【问题讨论】:
标签: regex .htaccess mod-rewrite redirect apache2