【问题标题】:HTACCESS ignores imagesHTACCESS 忽略图像
【发布时间】:2020-08-11 15:08:23
【问题描述】:

我有以下非常简单的 htaccess 文件:

RewriteEngine On
RewriteRule a.jpg b.jpg
RewriteRule c.php d.php

所有四个资源都在根文件夹中。

PHP 规则按预期工作,但是 JPG 规则只是被忽略,就好像它不存在一样。图片 a.jpg 继续显示。

我完全不知道为什么会发生这种情况。

我能想到的唯一解释是,如果请求的资源是图像,则 Apache 以某种方式配置为根本不调用 htaccess。这可能吗?

【问题讨论】:

  • 不,在不同的机器上试过,同样的事情
  • “Apache 以某种方式配置为不调用 htaccess” - 技术上可能(在某种程度上),但极不可能是 IMO。您有权访问服务器配置吗?检查浏览器中的网络流量 - 这将准确告诉您该资源的服务方式。
  • 您确认不是浏览器缓存问题吗?尝试隐身或以某种方式清除缓存。
  • @jminardi 第一条评论(由于某种原因已被删除)就是这么问的。
  • 如果不是浏览器缓存,我强烈建议使用某种服务器端缓存或代理缓存。交换机器不一定能解决这个问题。

标签: apache .htaccess mod-rewrite


【解决方案1】:

我找到了原因,我会发布我的答案,以防有人遇到同样的问题。

服务器上似乎同时配置了 Nginx 和 Apache。 Nginx 是面向互联网的,而 Apache 是内部的。

看起来这家网络托管公司这样做是为了从 Nginx 的更好性能中受益,并同时为来自 Apache 环境的任何人提供兼容性。

当 Nginx 从 Internet 接收到 PHP 请求时,它允许请求通过并到达 Apache,但当资源是静态资源(图像、css、js)时,Nginx 会交付资源本身以获得最佳性能。

上面的 htaccess 图像规则没有被处理,因为请求甚至没有到达 Apache。

我暂时解决了这个问题,不允许 Nginx 自己处理图像并允许它们继续到 Apache。

更好的解决方案当然是移除 htaccess 依赖并处理 Nginx 配置文件中的所有内容,我很快就会这样做。

最好的解决方案当然是完全删除 Apache,但它是共享服务器,我无法完全控制。

【讨论】:

    猜你喜欢
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 2023-03-14
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多