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.php 或 search.html 或 search.inc.php 或 search.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?
如何以与 OpenGL 中的点精灵相同的方式渲染屏幕对齐的矩形