![httpd.conf 用于不区分大小写的文件服务](https://linux22.com/image/487775/httpd.conf%20%E7%94%A8%E4%BA%8E%E4%B8%8D%E5%8C%BA%E5%88%86%E5%A4%A7%E5%B0%8F%E5%86%99%E7%9A%84%E6%96%87%E4%BB%B6%E6%9C%8D%E5%8A%A1.png)
我是 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 将为您处理大小写敏感问题,在内部将所有内容都变为小写。