为什么我的 Apache 反向代理在发送回客户端时无法转换锚点 HREF 属性?

为什么我的 Apache 反向代理在发送回客户端时无法转换锚点 HREF 属性?

我有

# For blog
LoadModule proxy_html_module libexec/mod_proxy_html.so
LoadModule ssl_module libexec/mod_ssl.so
LoadModule xml2enc_module libexec/mod_xml2enc.so
SSLProxyEngine on
ProxyRequests off
ProxyPass /blog https://xxxx.wordpress.com
ProxyPassReverse /blog https://xxxx.wordpress.com
ProxyHTMLEnable On
ProxyHTMLURLMap https://xxxx.wordpress.com /blog
<Location /blog>
  ProxyPassReverse /
  ProxyHTMLEnable On
  ProxyHTMLURLMap / /blog
  RequestHeader    unset  Accept-Encoding
  #LogLevel proxy:debug
</Location>

遵循这些指南:

https://devcenter.heroku.com/articles/custom-php-settings#using-a-custom-application-level-apache-configuration

http://www.apachetutor.org/admin/reverseproxies

https://httpd.apache.org/docs/trunk/mod/mod_proxy.html

当我访问 URL 时http://www.xxxx.com/blog/它不能替代锚链接https://xxxx.wordpress.com/2015/09/16/hello-world/与/blog。

它在本地可以运行,但不能在生产中使用。

以下是通过代理并出现在浏览器中的 HTML 示例:

<h1 class="entry-title">
  <a href="https://xxxx.wordpress.com/2015/09/16/hello-world/" rel="bookmark">Hello world!</a></h1>

我还使用了其他博客主机(HostGator)而不是 Wordpress.com,但仍然不起作用。(但这不重要。)

Apache 2.4.16,生产:2.4.10(?)

答案1

除非目标主机具有返回预期 URL 的功能,否则响应主体中的链接无法使用代理引用进行更新,否则您需要通过附加编码明确管理响应主体中的链接。 更多细节..

如果它在开发环境中工作,则意味着在生产环境中缺少这样的配置。

相关内容