【问题标题】:apache2 mod_substitute with HTTP 403 Forbidden codeapache2 mod_substitute 与 HTTP 403 禁止代码
【发布时间】:2016-07-07 00:48:19
【问题描述】:

有没有办法使用 Apache2 mod_substitute 来获取 HTTP/1.1 403 禁止结果?

我正在使用一个带有 mod_proxy、mod_substitute 等的 Apache2 作为托管 Wordpress 安装的多个 PHP 服务器的负载平衡器。 PHP 服务器的返回内容包含带有内部主机名的链接。这些被 mod_substitute 替换为外部域名。此设置适用于具有 200 状态代码的所有结果。

但 Wordpress 有时会使用 403 Forbidden。例如,这些页面包含“后退”链接。这些页面中的 URL 不会被我的替换规则替换。 mod_substitute 的文档没有提供有关此问题的信息。

最好使用代理端解决方案。但我也在考虑通过 wordpress 更改返回的状态代码或编写我自己的 apache2 mod。

谢谢

中的

mod_substitute 配置

<Location />
    AddOutputFilterByType SUBSTITUTE text/html
    Substitute "s|http://backend.tld/|http://frontend.tld/|in"
</Location>

【问题讨论】:

  • 我没有看到任何限制它成功响应的东西。您是如何添加过滤器的?
  • 我已将 mod_substitute 配置添加到初始帖子中。
  • 我最初的分析有部分错误:问题只存在于 403 Forbidden,而不是 302 Found。因此,在 Wordpress 中更改 HTTP 代码是可能的,但不是我们所希望的。欢迎提出其他建议。

标签: wordpress apache2.4


【解决方案1】:

Wordpress 特有的解决方案是将以下代码添加到插件中:

function change_403_codes() {
    if(http_response_code () == 403) {
       http_response_code(200);
    }
}
add_action ('shutdown','change_403_codes');

【讨论】:

  • 此解决方案不适用于新的 wp 版本 (>4.4)。
猜你喜欢
  • 1970-01-01
  • 2014-08-16
  • 2014-02-03
  • 2012-01-08
  • 2018-11-17
  • 1970-01-01
  • 2016-01-12
  • 2013-07-12
  • 1970-01-01
相关资源
最近更新 更多