php – .htaccess文件重定向到错误的目的地
我有一个LAMP堆栈.我正在使用以下.htaccess文件自动将请求映射到.php文件:
RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^.]+)$$1.php [NC,L] 因此,如果我浏览到http://example.com/asdf,将加载“asdf.php”文件. 但是,如果我创建一个具有相同名称的.css文件(即“asdf.css”),那么当浏览到没有扩展名的名称时,服务器将返回css文件而不是PHP文件.似乎也发生.txt文件扩展名,可能还有其他任何三个字符的扩展名(虽然不会发生.js文件). 我不明白为什么会这样.我对重写规则集的理解是这样的: 如何返回.txt或.css文件,尤其是当匹配的.php文件存在时?我在这里想念的是什么? 谢谢!
如果您有多个具有相同基本名称的文件,那么听起来就像您一样
与MultiViews发生冲突.尝试在.htaccess文件(或服务器配置)中禁用此功能: Options -MultiViews MultiViews(mod_negotiation的一部分)与mod_rewrite尝试做同样的事情,我怀疑是“获胜”.当您请求/ asdf和asdf映射到文件基名时,MultiViews会尝试提供与预期的mime类型相匹配的适当文件(这可以解释为什么错过.js文件).
否则,你对mod_rewrite指令的理解是非常正确的,除了顺序是另一种方式(首先处理RewriteRule模式)… >如果URL(整个URL)不包含句点.
没有必要在字符类中转义文字句点,并且NC标志在这里是多余的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |