【问题标题】:Imagepath like /images/john works but on another server not像 /images/john 这样的图像路径可以工作,但在另一台服务器上不能
【发布时间】:2012-03-02 06:25:37
【问题描述】:

我将 CMS 从一台服务器转移到另一台服务器。在新服务器上找不到图像。我查看了 HTML 代码并看到了

<img src="/images/john" alt="john" />

图片没有像*.jpg 这样的扩展名。但是为什么它在旧服务器上工作?它是相同的代码、相同的数据库和相同的 htaccess 文件。连 Internet Explorer 都能找到图片。

Apache 或 PHP 配置是否对该行为负责?我只想找出原因。

【问题讨论】:

  • 可能缺少 mime 的重写或配置
  • 您的意思是在 htaccess 中缺少重写?对于 Mime,您的意思是 mime 类型?没有 mime 类型,因为它只是一个 img src
  • 是的,丢失的重写可能是 url /images/john 实际上可能被重写或重定向到 /images/john.jpg if 或 /images/*/images/$1.jpg 或者它实际上可能会被重定向到一个脚本处理将在数据库服务器上检索数据的请求
  • 脚本是相同的 - 所以它应该适用于两者。在根文件夹中没有活动的 htaccess 文件(只有一个带有下划线 _.htaccess 的文件)。嗯,我更正了路径,它适用于这张图片。

标签: php image apache url path


【解决方案1】:

是否有可能在旧服务器上启用了 MultiViews 而在新服务器上未启用? MultiViews 是一项 Apache 功能,可让您在不包含扩展名的情况下查询文件(因此 images/john 可能会在 images/john.jpg 返回文件)。它旨在(据我所知)允许您拥有同一页面的多个版本,最终版本取决于用户的语言环境;从西班牙请求index 的浏览器可能会得到index.es.php,而在日本它可能会得到index.jp.php。我自己从来没有使用过这个功能,所以我不知道这是否是为依赖于语言环境的页面提供服务的正确用法,但我知道 MultiViews 具有服务index.php 以响应index 的副作用。

请注意,MultiViews 由Options 指令控制,它是唯一不包含在All 中的选项。因此,要获得包括 MultiViews 在内的所有选项,您需要在 .htaccess 文件中使用 Options All MultiViews。这可能会也可能不会启用 MultiViews,具体取决于 Apache 为您的目录配置中的 Allow Override 指令;如果您使用的是共享主机,那么您只能抱怨(尽管他们倾向于允许所有 .htaccess 覆盖以避免此类抱怨)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多