我想将不存在的文件重写为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。是否有一些我缺少的配置,或者这是重写的预期行为?有没有办法达到我想要的目的?
答案 0 :(得分:1)
我认为您默认情况下在Apache中启用了MultiViews
。尝试在.htaccess:
Options -MultiViews
使用MultiViews
Apache会自行重写并且通常与mod_rewrite