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

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

在Windows上创build网站时,会无意中创build与实际文件名不一致的链接等。 您通常会注意到这个错误,直到您将网站部署到区分大小写的文件系统(在Linux,UNIX,…上默认)。

现在,我想知道是否有办法避免这种types的错误, 即使文件系统不关心 ,也使Apache Web服务器在某种程度上关心案例 。 我的意思是NTFS在文件名中的大写和小写字母之间是不同的,所以理论上可以检查文件名是否区分大小写。


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

另外,不使用Windows不是一个选项。 我不主动使用Windows,在这种情况下不可能在不同的平台上运行Apache。

Solutions Collecting From Web of "我可以使在Windows上运行的Apache区分大小写吗?"

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

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

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

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

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

请参阅这里的文档。

NTFS实际上支持区分大小写的文件名称。 它被Microsoft的Services for UNIX使用和启用。 它在注册表中被控制。 做一个“ObCaseinSensitive”注册表项的谷歌。 如MSDN博客 ,特别是这个微软知识库文章: kb817921

这不是一个问题,你可以解决你想要的方式。 您需要通过强制小写来上传文件。 你将避免在Windows上的命名冲突问题,所以如果你在Windows上构建的东西,那么你将不必担心。 现在,您需要使用某种链接检查程序来查找包含大写字母的URL,然后替换为小写字母。

不过,Ryan Guill提出了一个很好的建议来启用CheckSpelling。

看起来你可以在Apache配置文件中启用带有指令CheckSpelling的mod_spelling。

信息和上下文在这里找到: http : //bytes.com/topic/apache/answers/608164-apache-case-sensitive-urls

编辑:上面是引用了相反的问题,我很抱歉。 有人提出了同样的问题,但是如果答案有效,则不会回应。 在进一步观察之后,实际上似乎没有一个标志或apache本身的任何设置来做到这一点。 有人建议尽可能使文件系统区分大小写,但似乎会造成更多的问题,特别是对于其他不期望的程序。

总的来说,如果你不能在另一个操作系统上开发,并且你不能通过改变所有现有的文件名为小写字母(这是可以理解的),那么看起来你并没有多少选择。 我现在提出的唯一建议就是尝试获得一个测试环境,与生产环境完全一样,并在发送到生产环境之前尽可能进行测试。

对不起,误会,我不能有更多的帮助。

Windows可以设置为区分大小写模式。 NTFS卷也支持区分大小写的模式。 如果您之前安装了UNIX互操作性,则您的Windows可能已经变成区分大小写模式。 我相信在注册表中有一个切换,但是我忘记了它在哪里,所以我不能为你考虑它。 🙁