.htaccess:带有参数“images”的干净URL不起作用

时间:2014-10-17 17:30:36

标签: .htaccess url mod-rewrite url-parameters

我刚刚开始尝试弄清楚如何使用.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 / (带斜线)可以正常工作。我一直在寻找最近几天的解决方案,这是我能得到的最好的解决方案。

1 个答案:

答案 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]