有没有办法将Apache2 mod_substitute用于HTTP / 1.1 403 Forbiden结果?
我使用一个带有mod_proxy,mod_substitute等的Apache2作为托管Wordpress安装的多个PHP服务器的负载均衡器。返回的PHP服务器内容包含具有内部主机名的链接。这些被mod_substitute替换为外部域名。使用200状态代码,此设置适用于所有结果。
但Wordpress有时会使用403 Forbidden。例如,这些页面包含" back" -links。这些页面中的URL不会被我的替换规则替换。 mod_substitute的文档没有提供有关此问题的信息。
首选代理端解决方案。但我也在考虑通过wordpress更改返回的状态代码或编写自己的apache2 mod。
由于
< VirtualHost> 中的mod_substitute配置
<Location />
AddOutputFilterByType SUBSTITUTE text/html
Substitute "s|http://backend.tld/|http://frontend.tld/|in"
</Location>
答案 0 :(得分:0)
Wordpress特定的解决方案是将以下代码添加到插件中:
function change_403_codes() {
if(http_response_code () == 403) {
http_response_code(200);
}
}
add_action ('shutdown','change_403_codes');