如何解决Web服务器上区分大小写的文件名?

时间:2014-10-01 17:12:50

标签: php

我不知道如何解决这个问题。

请帮我解决这个问题。

我正在使用localhost。 每当我操作localhost/xyz/about.phplocalhost/xyz/About.php(关于和关于)它的工作。 但是在godaddy LINUX网络服务器上,当我在地址栏上输入时将字母改为大写字母时, 就像www.xyz.com/about.phpwww.xyz.com/About.php一样,它不起作用的原因是什么?

服务器上是否存在区分大小写的问题?如果是的话我该如何解决呢? 感谢。

2 个答案:

答案 0 :(得分:1)

godaddy服务器在unix机器上运行。这台机器有一个区分大小写的文件系统,因此About.phpabout.php实际上是不同的文件,其中一个文件不存在于您的服务器上。 您可以使用htaccess重写它并重定向,但它只是一个临时解决方案

将此.htaccess放入xyz目录

RewriteEngine On
RewriteRule ^(About|aBout|abOut)\.php about.php [L,R=301]

答案 1 :(得分:0)

我假设您在Windows操作系统上运行localhost;它的文件系统和命名是不区分大小写的。

Linux和其他UNIX变体区分大小写。 HTTP服务器将使用OS文件系统来查找您请求的资源。不幸的是,这在平台上有所不同。

如果要复制环境,请在开发和生产中使用相同的操作系统。

在VM中安装Linux并在其上进行开发,或者转移到Windows主机提供程序。

除此之外,有一些apache模块可以让你在Linux上实现不区分大小写(How do I make URLs case insensitive in Linux server),但你应该避免。只需对URI使用正确的大小写并继续。通常,这就是为什么非Windows Web开发世界的大部分都使用小写的文件和URI。混合大小写命名约定在应用于区分大小写的文件系统时可能会遇到麻烦,因为从开发人员到开发人员或公司与公司之间存在细微差异和不同意见。