我可以让在Windows上运行的Apache区分大小写吗?

时间:2009-02-03 13:57:59

标签: windows apache file

Windows文件系统(FAT,NTFS)不关心文件名的大小写(不区分大小写)。因此,在Windows上运行的程序(如Apache Web服务器)处理文件不区分大小写。

在Windows上创建网站时,无意中会创建与实际文件名不匹配的链接等。在将网站部署到区分大小写的文件系统之前,您通常会注意到这些错误(在Linux,UNIX,...上是默认的)。

现在,我想知道是否有办法通过使Apache Web服务器以某种方式关心案例来避免这些错误,即使文件系统不关心。我的意思是NTFS在文件名中的大写和小写字母之间确实不同,因此理论上可以检查文件名是否以区分大小写的方式匹配。


我知道像“仅使用小写”这样的命名约定可以帮助避免这些问题,但这对现有文件没有帮助并且不太方便: - )

此外,不使用Windows也不是一种选择。我不自愿使用Windows,在这种情况下不可能在不同的平台上运行Apache。

7 个答案:

答案 0 :(得分:4)

据我所知你不能,但我会看到这个问题以寻求其他答案。

作为一种解决方法,您说您必须在Windows上进行开发。如何在虚拟PC中安装Linux。有几个免费的VM程序,如VirtualBoxMicrosoft Virtual PC。这样,您就可以将开发环境与部署环境相匹配。

除此之外,我发现最好确保你使用小写字母来减少错误。

答案 1 :(得分:3)

根据Apache文档,这是不可能的,因为Windows操作系统中嵌入了不区分大小写。 但是你可以“扭转问题”并使Linux / Unix下的Apache服务器不区分大小写。只需将以下指令添加到.htaccess:

RewriteEngine On
RewriteMap lowercase int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lowercase:$1} [R,L]

请参阅文档here

答案 2 :(得分:1)

因此现在可以在Windows 10上执行此操作 https://www.windowscentral.com/how-enable-ntfs-treat-folders-case-sensitive-windows-10

fsutil.exe文件SetCaseSensitiveInfo C:\ folder \ path enable

答案 3 :(得分:0)

您似乎可以在Apache配置文件中启用带有指令CheckSpelling的mod_spelling。

此处的信息和上下文:http://bytes.com/topic/apache/answers/608164-apache-case-sensitive-urls

编辑:上面引用了问题的反面,对不起。有人确实问过你在那之后做的同样的问题但是如果答案有效则永远不会回答。在进一步观察之后,实际上似乎没有一个标志或apache本身的任何设置。有些人建议尝试使文件系统区分大小写似乎是可能的,但看起来它会导致更多问题,特别是对于其他不期望这样的程序。

总的来说,如果你不能在另一个操作系统上开发并且你无法通过并将所有现有文件名更改为小写(这是可以理解的),那么它看起来并不像你真的有很多选择。我现在给你的唯一建议是尝试获得一个测试环境,设置与生产环境完全相同,并在发送到生产之前尽可能多地进行测试。

对于这种误解感到抱歉,我无法提供更多帮助。

答案 4 :(得分:0)

NTFS实际上支持区分大小写的文件名。它由Microsoft的UNIX服务使用和启用。 它在注册表中受到控制。 在“ObCaseinSensitive”注册表项上做谷歌。 例如msdn blog 特别是这篇微软知识库文章:kb817921

答案 5 :(得分:0)

这不是您可以按照自己的方式解决的问题。您需要通过强制小写来上传文件。您将避免Windows上的命名冲突问题,因此如果您在Windows上构建内容,则不必担心这一点。现在,您需要使用某种链接检查程序来查找包含大写字母的URL,然后使用小写等效项替换。

然而,Ryan Guill确实提出了启用CheckSpelling的好建议。

答案 6 :(得分:0)

Windows,可以设置为区分大小写模式。 NTFS卷也支持区分大小写模式。如果之前安装了UNIX互操作性,则Windows可能已经变为区分大小写模式。我相信注册表中有一个转换,但我忘了它在哪里,所以我无法为你找到它。 : - (