Apache 加载任何以与 url 中使用的相同字符串开头的文件。如何防止这种情况?

Posted

技术标签:

【中文标题】Apache 加载任何以与 url 中使用的相同字符串开头的文件。如何防止这种情况?【英文标题】:Apache loads any file that begins with the same string as used in url. How to prevent this? 【发布时间】:2011-02-11 11:16:39 【问题描述】:

如果我指向:

mywebsite.com/search

并且有一个名为 search.phpsearch.htmlsearch.inc.phpsearch.whatthehell 的文件.php 在网站目录中,Apache 将指向该文件而不是 404'ing。

更烦人的是,如果我指向:

mywebsite.com/search/string?also=whatever

Apache 仍将显示文件名以“search”开头的任何文件。

此外,所有包含目录中文件名模式的 RewriteRules 都将被忽略/无用。

我在 Mac 上使用 Apache 2,未修改 httpd.conf。如何防止它如此随意地重定向我的网址?

【问题讨论】:

你启用了 mod_speling 吗? 谢谢,但是禁用了 mod_speling 也是一样的。 好的,您是否启用了缓存模块?如果是这样,禁用缓存以及 mod_speling 是否仍然会导致此问题? 当我禁用 cache_module 时,我得到“[notice] 捕获 SIGTERM,正在关闭”并且 Apache 甚至不会重新启动...禁用磁盘和内存缓存没有任何作用。 【参考方案1】:

您必须使用 Options 指令禁用 MultiViews 选项。这是apache内容协商模块的一个特性,所以如果你不使用mod_negotiation你可以直接卸载它。

http://httpd.apache.org/docs/2.0/content-negotiation.html

如何为 /var/www 目录禁用 MultiViews 的示例:

<Directory /var/www/>
    Options Indexes FollowSymLinks -MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

http://httpd.apache.org/docs/2.0/mod/mod_negotiation.html#multiviews

【讨论】:

就是这样!谢谢你好先生。

以上是关于Apache 加载任何以与 url 中使用的相同字符串开头的文件。如何防止这种情况?的主要内容,如果未能解决你的问题,请参考以下文章

计划任务是不是以与网页相同的方式加载 Application.cfc?

在url中哈希以与ajax进行深层链接

如何重新映射鼠标按钮以与自动热键中的热键前缀基本相同

如何以与 OpenGL 中的点精灵相同的方式渲染屏幕对齐的矩形

重写 apache 2 的规则以与 angular js 一起使用

在 Keras 中使用 `predict` 以与给定相同的顺序预测一维数组