请求我的网站的任何资源,如/ profile,/ profile /,/ market(有或没有最终斜杠)和/ api /就可以了,但当我尝试请求/ api(没有最终斜线)时,我得到了301永久移动并重定向到/ api /?_ url = api / api。 / profile和/ api之间的Apache差异以及如何修复此重定向?
我的.htaccess看起来像这样:
RewriteEngine on
RewriteCond %{REQUEST_URI} !\.(css|js|png|jpeg|jpg|svg)$
RewriteRule ^(.*)$ controller.php?_url=$1 [QSA,L]
我正在使用Apache 2.2.27
答案 0 :(得分:1)
差异很可能是/api/
是一个目录,mod_dir
在mod_rewrite
模块中运行上述规则后添加了一个尾部斜杠。您可以通过以下代码来控制此行为:
# turn off auto-trailing slash after a directory
DirectorySlash off
RewriteEngine on
# add a trailing slash to directories
RewriteCond %{DOCUMENT_ROOT}/$1 -d
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L,R=302,NE]
RewriteCond %{REQUEST_URI} !\.(css|js|png|jpeg|jpg|svg)$ [NC]
RewriteRule ^(.*)$ controller.php?_url=$1 [QSA,L]