2014-10-17 77 views
1

我刚开始试图弄清楚如何用.htaccess制作干净的网址,但似乎我马上跑到了墙上......我已经得到以下简单的.htaccess:.htaccess:带参数“images”的干净网址不起作用

RewriteEngine on 

RewriteRule ^([a-zA-Z0-9-]+)$ index.php?id=$1 [L] 
RewriteRule ^([a-zA-Z0-9-]+)/$ index.php?id=$1 [L] 

它主要按预期工作:mysite.com/somepagemysite.com/index.asp?id=somepage

除了id是'图像'时。当我尝试mysite.com/images它显示:mysite.com/images/?id=images(尽管该网页还装载罚款)

顺便说mysite.com/images/(带斜线)工作正常。过去几天我一直在寻找解决方案,这是我能得到的最好的解决方案。

回答

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] 
+0

是的,那样做了。谢谢。 – obscure 2014-10-17 18:02:28

+0

不客气,很高兴它解决了。 – anubhava 2014-10-17 18:07:59