我已为网站支持页面 (www.company.com/support) 设置了代理通行规则,以重定向到第三方托管网站 (company.custhelp.com)...但网站链接本身都在单独的域中。有没有办法可以维护代理会话,以便会话中点击的链接也通过代理并维护我希望用户看到的“正确”网址?
答案1
要伪装域名,您可以使用以下规则。
ProxyPass /support http://company.custhelp.com
ProxyPassReverse /support http://company.custhelp.com
远程站点上的任何 URI 链接都需要是相对的,这样当点击时,它们始终与您的域相关。例如:
<a href="faq.html">
对阵
<a href="http://company.custhelp.com/faq.html">
如果由于某种原因您无法控制远程站点的内容(我不明白为什么您不能控制),则没有 Apache 模块可以解析页面。您需要创建一个脚本来处理来自服务器的这些请求。该脚本将充当代理:从远程站点获取页面,解析内容并重写 HTML(URI),然后将其返回给最终用户。
创建此类脚本时会遇到一些挑战。首先想到的是图像和 css 文件。您需要决定是通过您的网站提供图像还是让脚本不重写图像 URL。如果图像引用是相对的,您需要提供它们或让脚本使用远程源域重写这些相对路径。您在使用 css 文件时也会遇到类似的问题。另一个是“HTTP_REFERER”规则。虽然这种情况很少见,但如果远程站点有任何“HTTP_REFERER”规则,这些项目将不起作用。
这当然并非不可能,但你需要考虑很多可能性。