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 禁止代码的主要内容,如果未能解决你的问题,请参考以下文章
AuthnProviderAlias ldap 可以与 Apache2.4.x 一起使用吗?