apache2 mod_substitute 与 HTTP 403 禁止代码

Posted

技术标签:

【中文标题】apache2 mod_substitute 与 HTTP 403 禁止代码【英文标题】:apache2 mod_substitute with HTTP 403 Forbidden code 【发布时间】: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 代码是可能的,但不是我们所希望的。欢迎提出其他建议。 【参考方案1】:

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

function change_403_codes() 
    if(http_response_code () == 403) 
       http_response_code(200);
    

add_action ('shutdown','change_403_codes');

【讨论】:

此解决方案不适用于新的 wp 版本 (>4.4)。

以上是关于apache2 mod_substitute 与 HTTP 403 禁止代码的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu中apache2的安装与卸载

Apache2.4.x与Apache2.2.x的一些区别

AuthnProviderAlias ldap 可以与 Apache2.4.x 一起使用吗?

PHP 命名空间与 Phalcon、Vagrant、Apache2 的冲突

ubuntu16.04下配置apache2与php

在防御 DDOS 时,Apache2 mod_evasive vs mod_security 与 OWASP crs?