REQUEST_URI的RewriteCond不能像我想的那样工作

时间:2012-12-27 22:13:26

标签: apache url-rewriting

我有这样的网址:www.mydomain.com/file/a-file.pdf

我想要的是如果我的REQUEST_URI从这开始:/file/那么file.php(在根目录中)应该处理请求。但是,如果URL类似于www.mydomain.com/files/a-file.pdf,则不应重写。

我已经完成了这项工作,但它无效:

RewriteCond %{REQUEST_URI} ^/file/
RewriteRule .* file.php [L]

如果我删除第一行的最后一行,它就可以正常工作,但www.mydomain.com/files/a-file.pdf也会重写。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

也许最简单的是忽略了与真实文件匹配的请求。扩展如下

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} ^/file
RewriteRule .* file.php [L]

这假设您的/files/a-file.pdf是一个真实的文件。