我一直在谷歌搜索一个小时,并认为我会看到有人快速回答。
我在托管的cms上运行了一个站点,并且刚创建了一个在新服务器上的子域上运行的wordpress博客。我无权访问托管(业务催化剂)CMS的源代码。
我想将CMS导航加载到我的wordpress主题,并考虑使用jQuery,但ajax似乎有相同的域策略来加载内容。从我到目前为止所读到的方式来看,这是一个加载外部内容的php代理。如果没有深入研究,我可以看到导航链接存在问题,该链接具有原始域的相对URL,因此它们无法在blog.domain.com上运行。我不想为新服务器上的所有可能URL创建重定向,因为CMS导航将定期更新。
如何使用php加载导航内容来创建代理,但是会自动将相对网址更改为原始域的绝对网址? +导航中将有一个网址需要保持不变,这是指向子网域的网站blog.domain.com
提前感谢您的帮助。
答案 0 :(得分:0)
如何使用iframe代替ajax?然后你不需要处理跨域问题和相对路径。
答案 1 :(得分:0)
您好,通过简单的HTML DOM库找到了关于HTML解析和屏幕抓取的精彩文章:
我设法通过定位div id来解析导航。
现在我有最后一期。网址对其他服务器是实际的。如何在所有相对网址前添加完整的绝对网址:www.domain.com?到目前为止,这是我的代码:
<?php
include_once('simple_html_dom.php');
$html = file_get_html('http://www.domain.com/');
foreach($html->find('div#cat_514340_divs') as $e)
echo $e->innertext . '<br>';
?>
答案 2 :(得分:0)
好的,我会回答我自己的问题,以防其他人遇到同样的情况。
简单的HTML DOM库可让您通过定位div id解析导航:
然后,您可以直接将导航解析到您的php模板:
<?php
include_once('simple_html_dom.php');
$html = file_get_html('http://www.domain.com/');
foreach($html->find('div#cat_514340_divs') as $e)
echo $e->innertext;
?>
使用jQuery为每个href添加绝对URL:
jQuery(document).ready(function($) {
/* Add absolute urls to top navigation */
$('#nav a').each(function() {
var href = $(this).attr('href');
$(this).attr('href', 'http://www.originalsitedomain.com' + href);
});
});