.htaccess重写url以查找缺少的资源

时间:2013-11-09 08:21:52

标签: apache .htaccess mod-rewrite url-rewriting

我想将不存在的文件重写为php处理程序。我目前正在使用此.htaccess文件,但它无法正常工作:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ /app/index.php?_url=/$1

当我没有文件时,它有效;它正确地重定向到我的应用程序不存在的资源,我能够捕获它。

当我有完全匹配的文件时(例如:test.txt和我请求/test.txt);它正确加载test.txt。

然而,当我有一个部分匹配时(例如:test.txt存在,但我请求/测试);它根本不重定向。事实上,它给了我标准的Apache 404.我希望这实际上重写到我的应用程序,所以我可以用不同的方式处理请求。

我在Debian中使用了几乎默认的apache 2.2.22。是否有一些我缺少的配置,或者这是重写的预期行为?有没有办法达到我想要的目的?

1 个答案:

答案 0 :(得分:1)

我认为您默认情况下在Apache中启用了MultiViews。尝试在.htaccess:

之上添加此行
Options -MultiViews

使用MultiViews Apache会自行重写并且通常与mod_rewrite

冲突