httpd.conf 用于不区分大小写的文件服务

httpd.conf 用于不区分大小写的文件服务

我是 Apache 管理方面的完全新手,所以如果我的表述不正确,请原谅。

我有一个网站 -- 比如说http://domain.com。问题是,当我尝试http://domain.com/index.html在 Web 浏览器中打开时,它会显示该页面,但是当我尝试访问http://domain.com/Index.html(注意大写 I)时,它会以 HTTP 404 响应。

如何配置 Apache 以不区分大小写的方式提供这些文件(以及目录)?当前httpd.conf这里

编辑 丹C,谢谢提示。我基本上想允许用户从我的服务器下载文件,但又不想让他们知道这Index.html两者index.html实际上是不同的。

我也很想知道这个决定的后果是什么。

答案1

我首先想到的是mod_rewrite,它已加载到您的配置中。

假设您的文件全部都是小写的(这可能是一个危险的假设):

RewriteEngine On

RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule ^(.*)$ ${tolower:$1} 

答案2

如果您在 Linux 服务器上运行 apache,问题在于它使用底层区分大小写的 Linux 文件系统,您可以查看 Matt 提到的 ReWrite。

另一个选项是 apache 的 mod_speling 模块(是的,它是一个 L),提到>这里< 但我认为这只会查找一个拼写错误,而且如果一个目录中有很多文件,也可能会降低访问速度

希望有帮助

答案3

它实际上不适用于 httpd.conf。如前所述,问题在于您使用的 Linux 文件系统区分大小写。

我知道一种肯定有效的方法:将您的 Web 应用程序放入 /opt/www/yourapplication

然后为本地主机创建 /opt/www 的 SMB 共享

然后将 Samba 共享挂载到 /var/www

Samba 用于 Windows 共享,而 Windows 共享不区分大小写,因此 Samba 将为您处理大小写敏感问题,在内部将所有内容都变为小写。

相关内容