0

背景:我們正在將基於dot net的自定義CMS託管的網站遷移到Wordpress。如何在從一個CMS遷移到另一個CMS時保持鏈接

問題:各個帖子中的內容包含指向CMS中其他內容的鏈接。這些鏈接已經手動放入幷包含從http開始的整個URL。儘管我們已經使用PHP腳本將所有帖子內容移至Wordpress,但內容中的鏈接仍指向舊鏈接。由於URL結構發生了變化,因此似乎沒有替代鏈接的程序化方式。舊的URL的

例子:http://www.example.com/doing-this-and-that-1234.aspx

新的URL的例子:http://www.example.com/categoryname/doing-this-and-that/

請求:我需要對我們如何才能處理此無需手動更改所有鏈接的想法。

在此先感謝。

回答

1

我做的那一刻類似的東西,遷移一個巨大的靜態html商店上Django的運行(這是痛苦和血腥)。

我們的解決方案沒有任何特別的優雅。在每個頁面的遷移過程中,我們記錄了舊的url,然後是新的url,並將它們添加到重定向數據庫中。一旦我們遷移所有的內容到新的後端和URL結構,我們正在運行一個腳本,將確定所有鏈接文檔中與這些XPath選擇:

//a/@href 
//img/@src 

接下來我們從拉起重定向我們的重定向表,並用下面的正則表達式替換鏈接。

#escape special characters to avoid problems with the regex 
link = link.replace('#', r'\#') 
link = link.replace('.', r'\.') 
link = link.replace('/', r'\/') 
link = link.replace(':', r'\:') 

#compile a regex, using the source link, and replace all existing links 
repl_regex = r'href\s{0,}\=[\s\"\']{0,}(%s)[\s\"\']{0,}'%link 
markup = re.sub(repl_regex, 'href="%s"'%dst_url, markup) 

#repeat for images 
repl_regex = r'src\s{0,}\=[\s\"\']{0,}(%s)[\s\"\']{0,}'%link 
markup = re.sub(repl_regex, 'src="%s"'%dst_url, markup) 

#Let me know if you have any questions, the above is written in python 
#and it sounds like you're using php and a .net language. 

現在,雖然這種方法可能是更多的工作比你想,也需要多一點的前期準備,它有兩個好處:

1)通過每一個環節都在文檔中進行比較的重定向表,你將能夠更容易地識別缺失頁面/丟失重定向

2)SEO。不要讓googlebot重新抓取您的整個網站,只需提供301重定向對您的重定向表

讓我知道如果您有任何問題。

+0

沒有關係,謝謝你的詳細解答。當然看起來也是爲我們走的路。如果需要將會ping你。再次感謝。 – Vinayak 2012-01-02 02:30:03

1

我想不出一個很好的方法來做到這一點,但這是一個想法。您可以運行一個命令行腳本來遍歷所有頁面,然後遍歷所有鏈接並向用戶顯示原始鏈接和「建議」鏈接。建議的鏈接可以是具有最常見類別名稱的新格式,可以選擇更改爲其他任何類別名稱。

如果您不想編寫腳本,您可以使用文本編輯器,如記事本++或vim/gvim。在記事本++中,你可以用'搜索模式'替換爲'正則表達式',在vim中你可以使用substitute命令的確認標誌(:%s/foo/bar/gc)。

0

如果您可以在URL中的數字和類別名稱之間進行映射,那麼這是可行的。您搜索並用正則表達式替換所有文件,以找到http://www.example.com/doing-this-and-that-1234.aspx形式的URL,然後用新URL替換它們。

正則表達式:

(http://www\.example\.com/.*?)-(\d+)\.aspx 
+0

這個數字是隨機的,所以不幸的是這是行不通的。感謝您的建議,雖然 – Vinayak 2012-01-02 02:29:00

+0

你怎麼知道類別名稱? – lkuty 2012-01-02 12:43:34

+0

我們已將內容分類。它與早期的URL結構 – Vinayak 2012-01-04 09:59:43

相關問題