2013-11-09 38 views
1

我想重写php处理程序中不存在的文件。我目前使用这个.htaccess文件,但它不工作,因为我想:.htaccess丢失资源的重写url

RewriteEngine On 

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

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

当我没有文件,它的工作;它可以正确地重定向我的应用程序中不存在的资源,并且我可以捕获它。当我有完全匹配的文件(例如:test.txt和I request /test.txt)时;它正确加载test.txt。但是,当我有一个部分匹配(例如:test.txt存在,但我请求/测试);它根本不重定向。事实上,它给了我标准的Apache 404.我希望它能够重写到我的应用程序,所以我可以用不同的方式处理请求。

我使用Debian的默认apache 2.2.22。是否有一些配置我缺少,或者这是重写的预期行为?有没有办法实现我想要的?

回答

1

我认为你在默认情况下在你的Apache中启用了MultiViews。尝试加入这一行对你的.htaccess的顶部:

Options -MultiViews 

随着MultiViews阿帕奇做自己的重写,并且通常与mod_rewrite

+0

这正是它的冲突!谢谢! –

+0

不客气。 – anubhava