使用正则表达式批量修改WordPress文章内部链接(URI)

使用插件可以安全的变换WordPress网站的永久链接地址(Permalinks)。但是以前编辑的页面和文章里多半会引用自己站里的文章,那时候用的是旧的永久链接。使用永久链接迁移插件或者SEO工具插件并不会修改那些链接,而仅仅是替你做个301跳转,好让人可以通过原来的地址正确的找到文章。可是每次进行301 跳转也挺麻烦的,还要耗费一些不必要的系统资源。为了避免这些,同时可以让整个网站的内部链接URI都比较美观,我们就可以通过操作数据库将引用的内部文章的链接地址URI也进行编辑和修改。使用正则表达式(Regular Expression)来对查找匹配规则进行描述可以实现批量操作。

对简单的字符串替换,使用mysql的替换指令 REPLACE 就可以了,请参考“blog域名迁移之迁移wordpress”。不幸的是mysql数据替换指令 REPLACE 并不支持正则表达式,也就是说,对于满足一定规则却又并不完全一样的大量链接地址,你得一个个的去查找替换URI,要是网站有个一年半载的历史,那还不得累死?

比如,形如

http://cnzhx.net/blog/2010/01/01/post-name/

的链接地址因为发表于不同的年、月、日而具有不同的形式,那样的话你只能一个一个的去查找替换。这里要描述的例子是将上面的链接形式转换为下面的形式:

http://cnzhx.net/blog/post-name/

为了实现批量操作就必须使用正则表达式(Regular Expression)来对查找匹配规则进行描述。既然mysql数据库不支持这样的查找替换,我们就动用别的编辑器,比如UltraEdit。

操作步骤:

1、导出并备份一份原始数据库文件。

2、如果你是导出为zip或gz等格式,请将其解压,得到sql类型的文件,否则直接到下一步 3 。

3、使用UltraEdit打开该sql文件,如果提示转换为dos格式,选择

3、从工具栏选择 搜索——>替换,请注意勾选左下角的“正则表达式”。

4、使用正则表达式搜索并替换原来的链接:

A、文章链接的替换

原来的链接形如:

http://cnzhx.net/blog/2009/09/06/post-name/

新链接形如:

http://cnzhx.net/blog/post-name/

则正则表达式需要针对年、月、日那一部分进行编写。对于上面的例子,正则表达式可以写为(没有写得那么简洁,但是容易看懂):

在“查找什么”那里填入

http://cnzhx.net/blog/[0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9]/

在“替换为”那里填入:

Blog 导读

然后单击 全部替换 即可。

这里带上前面的域名是为了避免将博文中引用的别的博客上的链接地址也给替换了。如图所示:

使用UltraEdit中的正则表达式批量替换WordPress文章内部链接URI

完成后保存。

5、通过phpMyAdmin删除原来的数据库(确保你有备份),然后导入修改后的数据库。

6、进入网站和WordPress控制面板检查有没有错漏,若有,进行修正或者使用备份将数据库复原。

7、完成!

转载请注明:来自不存在的空间, 作者lonelicloud©

本文发表于水景一页。永久链接:<https://cnzhx.net/blog/regexp-change-wordpress-uri/>。转载请保留此信息及相应链接。

1 条关于 “使用正则表达式批量修改WordPress文章内部链接(URI)” 的评论

  1. 引用通告: 安全修改WordPress网站永久链接地址形式 « 不存在的空间

时间过去太久,评论已关闭。
如果您有话要说,请到讨论区留言并给出此文章链接。
谢谢您的理解 :-)