我刚刚开始尝试弄清楚如何使用.htaccess制作干净的网址,但似乎我马上碰到了一堵墙......我有以下简单的.htaccess:
RewriteEngine on
RewriteRule ^([a-zA-Z0-9-]+)$ index.php?id=$1 [L]
RewriteRule ^([a-zA-Z0-9-]+)/$ index.php?id=$1 [L]
它大部分都按预期工作: mysite.com/somepage 转到 mysite.com/index.asp?id=omepage 等。
除非id为'images'。当我尝试 mysite.com/images 时,会显示: mysite.com/images/?id=images (虽然页面仍然正常加载)
顺便说一句 mysite.com/images / (带斜线)可以正常工作。我一直在寻找最近几天的解决方案,这是我能得到的最好的解决方案。
答案 0 :(得分:0)
由于images
是一个目录,Apache的mod_dir
模块在重写规则后添加了一个尾部斜杠。您可以关闭此功能并自行添加尾部斜杠:
DirectorySlash Off
RewriteEngine on
# add a trailing slash
RewriteCond %{DOCUMENT_ROOT}/$1 -d
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L,R=302]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9-]+)/?$ index.php?id=$1 [L,QSA]