0

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

http://clipi.ca/1W

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

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

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

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

4

1 回答 1

0

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

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

......它似乎工作!

不过,理想的解决方案是让 Apache 开始时附加该斜杠。如果有人知道如何做到这一点,请在此处发布,我会给您答案。

于 2012-04-12T22:05:35.350 回答