2013-11-09 40 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