需要一些关于如何修复丑陋情况的建议。多年来,我们的论坛驻留在几个不同的域中。我们失去了一个5-6年前正在使用的域名,显然我们论坛上的一些帖子仍然在指向旧域名的帖子中有链接。更改指向的所有链接的最有效方法是什么
http://www.olddomain.com/stuff
指向
http://www.newdomain.com/stuff唯一改变的部分是域名,url中的所有线程变量都保持不变。这是最好在客户端使用javascript/jquery完成,还是应该在服务器端使用PHP函数来处理(不知道从哪里开始..)?一些伪代码似乎不能在客户端做我需要的事情……
$('a').each(function() {
var domanin = 'newdomain';
if(href.search('olddomain.com') != -1) {
$(this).attr('href', newdomain);
}
});谢谢
发布于 2011-12-08 03:30:37
我认为如果你在后端处理它会更有意义。搜索引擎不会注意到您通过JavaScript所做的更改。
因此,我建议您在数据库中搜索这些域,并在那里替换它们。
发布于 2011-12-08 03:34:41
要在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());
}发布于 2011-12-08 03:35:47
正如前面所说,你可能应该在服务器端这样做,但是如果你因为某种原因不能做到这一点,下面是你可以在javascript端做的事情。
$('a').each(function() {
this.host = 'www.newdomain.com';
});请注意,本例使用了jQuery,但您也可以使用getElementsByTagName在普通javascript中执行相同的操作。
https://stackoverflow.com/questions/8421268
复制相似问题