mod_rewrite不使用目录名称

时间:2012-04-12 21:21:06

标签: apache mod-rewrite

我正在使用mod_rewrite以下列形式将标识符传递给我的网络应用程序:

http://clipi.ca/1W

我用一个简单的正则表达式识别这些:

RewriteCond %{REQUEST_URI} ^/([0-9a-zA-Z]+)$
RewriteRule ^(.*)$ /index.php?urlid=%1 [L,QSA]

...在大多数情况下都能正常工作。但是我注意到,当标识符是目录的名称时,重写失败并且Apache正在返回目录索引!

如何停止此行为并将重写规则也应用于目录? (请注意,只要引用了目录中的实际文件,重写条件就会失败并且不会出现问题。)

1 个答案:

答案 0 :(得分:0)

我想我自己可能已经弄清楚了:显然,在应用任何重写规则之前,Apache会向映射到文件系统上的目录的请求附加一个尾部斜杠。这有点愚蠢,但是通过在我的条件正则表达式中添加一个可选的尾部斜杠:

RewriteCond %{REQUEST_URI} ^/([0-9a-zA-Z]+)/?$

......似乎工作正常!

仍然,理想的解决方案是让Apache 追加斜杠开头。如果有人知道该怎么做,请在此发布,我会给你答案。