gpt4 book ai didi

apache - mod_rewrite 问题 : RewriteCond %{REQUEST_FILENAME} ! -f 匹配,即使 REQUEST_FILENAME 不应(完全)匹配

转载 作者:行者123 更新时间:2023-12-02 06:46:05 32 4
gpt4 key购买 nike

出于某种原因,这条规则

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./rewrite.php?p=$1&%{QUERY_STRING} [L]

不适用于像这样的 URL http://site.com/index/var/val
所有其他 URL 都可以工作,但这个不行。当我删除 !-f 时它开始工作 部分或重命名位于根目录中的index.php 文件为其他内容(例如test.php)。那么在 mod_rewrite 看来,site.com/index 似乎等于 site.com/index.php 吗?这些文件位于根目录中,因此不应涉及任何其他(上部).htaccess 文件。这不仅仅发生在索引上,例如,如果我创建/something.xml,test.com/something/... 会突然停止工作。这种情况仅发生在某些服务器上。

有人知道为什么会发生这种情况吗?

PS。/index 目录不存在于该服务器上

最佳答案

故障模块为mod_negotiation ,而不是 mod_rewrite。

在 debian 中:

a2dismod negotiation

编辑:

更具体一点,这是由 mode_negotiation 处理的多 View 的效果。因此,您可以保留该模块并删除 MultiViews 处理:

Options -MultiViews

来自文档:

A MultiViews search is enabled by the MultiViews Options. If the server receives a request for /some/dir/foo and /some/dir/foo does not exist, then the server reads the directory looking for all files named foo.*, and effectively fakes up a type map which names all those files, assigning them the same media types and content-encodings it would have if the client had asked for one of them by name. It then chooses the best match to the client's requirements, and returns that document.

关于apache - mod_rewrite 问题 : RewriteCond %{REQUEST_FILENAME} ! -f 匹配,即使 REQUEST_FILENAME 不应(完全)匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7322286/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com