需要一些关于如何解决丑陋情况的建议。多年来,我们的论坛已经存在于几个不同的领域。我们丢失了一个在5-6年前使用的域名,显然我们论坛上的一些帖子仍然在指向旧域名的帖子中有链接。什么是更改指向
的所有链接的最有效方法 http://www.olddomain.com/stuff
指向
http://www.newdomain.com/stuff
唯一已更改的部分是域名,网址中的所有线程变量保持不变。这是用javascript / jquery做客户端最好的东西,还是应该在服务器级别用PHP函数处理(不知道从哪里开始......)?一些伪代码似乎没有在客户端做我需要它...
$('a').each(function() {
var domanin = 'newdomain';
if(href.search('olddomain.com') != -1) {
$(this).attr('href', newdomain);
}
});
谢谢
答案 0 :(得分:3)
我认为如果你在后端处理这个问题会更有意义。搜索引擎不会注意到您通过JavaScript所做的更改。
因此,我建议您在数据库中搜索这些域并在那里替换它们。
答案 1 :(得分:1)
在JavaScript(w / jQuery)中执行此操作:
$('a').each(function() {
var link = this.href;
if(link.search('olddomain.com') != -1) {
this.href = link.replace('olddomain.com', 'newdomain.com');
}
});
这是一个jsfiddle:http://jsfiddle.net/tHXxK/
但是我建议更改数据库中的链接,只需删除所有旧引用。为此,请创建一个搜索旧URL并替换它们的脚本,如:
$query = mysql_query("SELECT [id], [link] FROM [table] WHERE [link] LIKE '%//olddomain.com/%' OR [link] LIKE '%//www.olddomain.com/%'", $db) or trigger_erroR(mysql_error());
while ($row = mysql_query($query)) {
$iQuery = mysql_query("UPDATE [table] SET [link]='" . mysql_real_escape_string(str_replace(array('//olddomain.com/', '//www.olddomain.com/'), array('//newdomain.com/', '//www.newdomain.com/'), $row['link']) . "' WHERE [id]=" . $row['id']), $db) or trigger_error(mysql_error());
}
答案 2 :(得分:1)
嗯,你应该在服务器端这样做,就像之前所说的那样,但是如果你出于某种原因无法做到这一点,那么你可以在javascript方面做些什么。
$('a').each(function() {
this.host = 'www.newdomain.com';
});
请注意,此示例使用jQuery,但您可以使用getElementsByTagName
在纯JavaScript中执行相同操作。
答案 3 :(得分:0)
如果它是我,我会使用服务器端脚本将旧域的所有实例替换为新域,并且一劳永逸地完成。 我假设您的论坛数据库相当大。为了系统资源,您可以编写一个多步骤脚本,并分多步完成工作 这是一种更好的方法,因为它也可以提高搜索引擎的数据一致性。