【问题标题】:How to solve file name case sensitive on web server? [closed]如何解决 Web 服务器上文件名区分大小写的问题? [关闭]
【发布时间】:2014-10-01 17:12:50
【问题描述】:

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

请帮我解决这个问题。

我在本地主机上工作。 每当我在localhost/xyz/about.phplocalhost/xyz/About.php (关于和关于)上操作时,它都在工作。 但是在godaddy LINUX Web服务器中,当我在地址栏上输入时将字母更改为大写, 比如www.xyz.com/about.phpwww.xyz.com/About.php,为什么不工作?

服务器上是否有区分大小写的问题?如果是,那我该如何解决? 谢谢。

【问题讨论】:

  • Windows 文件命名约定比 LINUX/UNIX 更宽松。 About.phpabout.php 对于后者来说是不一样的。
  • 我会说这种行为是预期的,而不是要解决...

标签: php


【解决方案1】:

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

Linux 和其他 UNIX 变体区分大小写。 HTTP 服务器将使用操作系统文件系统来查找您请求的资源。不幸的是,这因平台而异。

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

要么在 VM 中安装 Linux 并在其上进行开发,要么迁移到 Windows 主机提供商。

除此之外,还有一些 apache 模块可以让您在 Linux (How do I make URLs case insensitive in Linux server) 上实现不区分大小写,但您应该避免这种情况。只需对 URI 使用正确的大小写,然后继续。一般来说,这就是为什么许多非 Windows Web 开发世界使用小写的文件和 URI。混合大小写命名约定在应用于区分大小写的文件系统时可能会出现问题,因为开发人员之间或公司之间存在细微的差异和不同的意见。

【讨论】:

    【解决方案2】:

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

    把这个 .htaccess 放到你的 xyz 目录中

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

    【讨论】:

    • 在 htaccess 上写什么?
    • 它不仅仅是关于“关于或关于”的例子,我在谈论所有 url..假设用户知道 url 并在两种情况下都输入 xyz.com/username 或 xyz.com/Username它应该工作
    猜你喜欢
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 2019-12-25
    相关资源
    最近更新 更多