【发布时间】:2019-08-19 18:44:11
【问题描述】:
我有一个 php 页面,我正在尝试加载,然后回显和外部页面,(它位于同一台服务器中,但在完全不同的路径/域中,如果这很重要的话)。
我尝试过同时使用file_get_contents() 和curl。他们都正确加载了目标页面的 html,问题是它没有正确显示,因为该目标页面具有指向多个文件(图像、css、javascript)的相对链接。
有什么方法可以用 PHP 来完成这个任务吗?如果没有,下一个最好的方法是什么?目标站点必须看起来像是从初始页面加载的(URL 方式),我不想进行重定向。
所以,浏览器会显示http://example.com/initial-page.php,即使它的内容来自http://example2.com/target-page.php
编辑: 这可以通过 iframe 轻松完成,但出于多种原因,我也想避免这种情况,其中之一是因为使用 iframe 会破坏目标站点的响应能力。我也无法更改目标站点的代码来解决这个问题。
【问题讨论】:
-
由于这是在同一台服务器上获取 HTML 内容的一种相当非正统的方法,我认为您在处理它的方式上必须是非正统的。您可以在
file_get_contents()的返回内容上使用preg_replace()将这些相对路径切换到它们的完整路径。也许像preg_replace("$\/", "http://example.com/", $pagecontent)之类的东西(可能不是 100%,但它在球场上)。 -
@JNevill 我确实考虑过这一点,但目标站点的脚本也使用相对路径加载内容,我认为我无法用这种方法解决这个问题,但谢谢!
-
您可以添加 base 标签来指定用于文档中包含的所有相对 URL 的基本 URL,例如
<base href="http://example.com" />
标签: php curl file-get-contents