簡體   English   中英

更改網站鏈接中的所有域

[英]Change all domains in links on a website

需要一些有關如何解決丑陋情況的建議。 這些年來,我們的論壇位於兩個不同的領域。 我們丟失了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);
   }
});

謝謝

我認為,如果在后端處理此問題,則將更有意義。 搜索引擎不會注意到您通過JavaScript所做的更改。

因此,我建議您在數據庫中搜索這些域並在其中替換它們。

要在JavaScript(帶有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());
}

好吧,您可能應該像之前所說的那樣在服務器端執行此操作,但是如果由於某種原因而無法執行操作,那么您可以在javascript端執行此操作。

$('a').each(function() {
  this.host = 'www.newdomain.com';
});

請注意,此示例使用jQuery,但是您可以使用getElementsByTagName在純JavaScript中進行相同的操作。

如果是我,我會使用服務器端腳本用新域替換舊域的所有實例,並一勞永逸地完成。
我認為您的論壇數據庫很大。 出於系統資源的考慮,您可以編寫多步驟腳本並分多個步驟來完成這項工作。
這是一種更好的方法,因為它也可以提高搜索引擎的數據一致性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM