SMERS ~ 05012008

This is a naked sparanoid dot com, a site now running without stylesheets.


WordPress 更换永久链接不完美解决方案

举例,原永久链接为 /%year%/%monthnum%/%day%/%postname%/,后更改为 /%category%/%postname%/。要达到的效果是以前的永久链接全部 301 转向;文章、评论、Pingback 及 Trackback 中出现的原永久链接全部替换为新链接

1. 301 转向原永久链接

如果使用的 WordPress 是 2.3 的话,更换新永久链接后,旧链接应该还会自动转向到新链接,2.3 没用过,不知道有没有这个功能?如果低于 2.3 的话,可以使用 Dean's Permalinks Migration 来实现第一个目标

2. 替换文章、评论、Pingback 及 Trackback 中出现的原永久链接地址

先下载 Search Regex 插件,上传并激活,再下载 本文提供的两个 hacks,上传到 search-regex\searches 文件夹下

使用正则搜索:
/sparanoid.com\/blog\/[0-9]{4}\/[0-9]{2}\/[0-9]{2}/

替换为:
sparanoid.com/blog

使用时将 sparanoid.com 替换成自己的域名,用以上设置,分别替换 Post content、Post excerpt(如果有使用的话)、Comment content、Pingback author URL、Trackback author URL 部分。附图片说明如下:

Search Regex 设置

Download / search-regex.zip / 4 KB


/ WordPress / TB / Commt


Just 35 Comments?

~GordianZ

又换成反色的了...有什么大事件么?

~Sparanoid

没有,这个不完全是反色了,把它当成一个独立的主题了

~GordianZ

不错不错,喜欢这种高对比的色调 :D

PS:不完美应该是imperfect,不是unperfect.

~Sparanoid

好像用 unperfect 的很少……
http://dictionary.reference.com/browse/unperfect

~GordianZ

狡辩啊狡辩啊
:P

~GordianZ

转换到TextPattern也太夸张了吧...
还一年到八年不等...

~Sparanoid

觉得 txp 比较不错,不过作者更新缓慢,还是有东西需要完善,比如 wp 数据库转入 txp 时,所有的 slug 都不会被转入,而是用 txp 自己的 slug,txp 的 slug 是不支持中文的,比如一篇文章叫“WordPress 更换永久链接不完美解决方案”,导入 txp 后 slug 就是“wordpress-”了

~Remex

你还真说到风就是雨,小伙子冷静点

~GordianZ

所以还是自己写一个最靠谱...

~GordianZ

to Remex:
我们赌一把,我赌S最终不会把BLOG转到TextPattern :D

~Sparanoid

我看行,打个八年的赌吧

~GordianZ

八年后,WP和TP估计都不在了...

~Remex

以S的智力和魄力,要转还不是很容易
可以赌啊,赌啥?

~GordianZ

赌钱太没新意了,我也想不出来赌什么,让S出出主意吧...只要不太过分,我们俩能接受就行...

~Sparanoid

呃……赌输的人 Out Of Blog 1个月吧

~Remex

太轻了,没挑战,我可以三个月都不写blog的

~GordianZ

我其实先有这个想法...但是我的期限是一天...一个月...不错不错...我到US也就没那么多时间BLOG了...哈哈

~小马

不写 blog 感觉很放松,嘿嘿。

~Sparanoid

那干脆半年好了……?哈哈

小马因为工作原因 Out of Blog 了?好像你 blog 后面发的那几篇文章都没有了

~Sparanoid

昨晚做梦时想了一招,不过醒来却忘记了

~GordianZ

要是一边做梦一边开OneNote你就不会忘了...
哈哈,M$给我广告费啊..

~小马

因为升级到2.3时感觉不爽,所以又重新回到低版本,导致丢了几篇blog,不过还好。

有个问题,http://www.sogou.com/web?query=site:http%3A%2F%2Fwww.xiaoma.org%2F 。
那些 page/* 怎么产生的?

~GordianZ

to 小马:
并没有产生这些页面,只是这个正好连接被.htaccess兼容了,和没有这一串的URL是一样的效果,同样是显示某个page.但是搜索引擎应该是不会录入这些没有链接指向的URL的...难道说Sogou会随机测试URL?

~小马

GordianZ,我不懂 .htaccess 。不存在的 url 搜索引擎怎么会找到,并没有实际链接啊。sogou 还是很有意思的。
第三代搜索引擎啊,哈哈。

~GordianZ

我用Google搜过了,没有类似的情况,应该是Sogou自作聪明吧

"第三代搜索引擎",难道有启发式搜索功能,自动探测密码等等功能?哈哈

~Sparanoid

也有可能就是你说的那样……国外好像就有一个类似的搜索引擎,好像是某个大学生用来测试的,前一阵子曾经疯狂的爬我的网站,像在穷举一样

~GordianZ

BAN掉就好了...只能这样对付疯子...DH的空间就是可怜啊...

~小马

如果整体转移到另外的目录,如何做 301 转向,不会让我一个一个地转吧。

~Sparanoid

举几个我的例子吧,不知道是不是要这种效果的?

Redirect 301 /download/ http://lib.sparanoid.com/download/
Redirect 301 /blog/archive/ http://sparanoid.com/taxonomy/blog/
Redirect 301 /work/category/ http://sparanoid.com/taxonomy/work/

这很容易理解吧,这个 .htaccess 是放在网站根目录的,就是说:

sparanoid.com/download/*.* 会转到:lib.sparanoid.com/download/*.*

sparanoid.com/blog/archive/* 会转到:
sparanoid.com/taxonomy/blog/*

sparanoid.com/work/category/* 会转到:
sparanoid.com/taxonomy/work/*

Redirect 301 前面是要转的、现在已不存在的内容,后面的是目标格式,之间用一个空格分开

~小马

只要转目录,那么目录内的文件也会自动转向?
再问一下 Permalinks 的问题,在 .htaccess 中能不能同时放2个,一个是根目录的,一个是其他目录,还是合并在一起写。
我的 .htaccess 文件在FTP中看不到,也不让修改,每次修改都要空间商客服来改,也不知道这个文件实际情况是什么。

~GordianZ

to 小马:
无文件名的文件在*nix下面被认为是隐藏文件,一些FTP客户端也会隐藏(因为用的命令为ls -l).如果用cuteftp的话要在站点管理器里面的过滤器里面设置一下.或者你直接用命令行链接,列目录的时候不要用DIR,用ls -la,就可以显示隐藏文件了.
.htaccess为apache默认的runtime configuration(RC),可以针对目录覆盖掉httpd.conf的相应设置.例如rewrite规则既可以写到.htaccess里面也可以在httpd.conf里面的相应directory进行设置.
.htaccess可以在每个目录下面放一个,也可以合并放到根目录下面.

~小马

谢谢 GordianZ !可以查看并下载了。
就是无法修改它,shit!

~小马

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteEngine On
RewriteBase /blog1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog1/index.php [L]

这样写,是不是第2段就不起作用了。
小S这里Google抓的很快,昨天的内容今天就能搜索到。

~Sparanoid

应该是第二个吧,我不太清楚

~小马

嗯,好像是说反了。


Add Your Comment




Your Comment:

Essential XHTML tags are allowed ( ). URLs are automatically converted into hyperlinks. Email addresses will never be published.