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

相关问题