Permalink是Permanent Link(永久的连接)的缩写,Permalink 指向的均为一个网络日志条目 (Entry) 的独立网页。
WordPress2.7中的设置位置是Settings->Permalinks。除开默认的“http://phpstone.com/?p=123”设置格式,还有按天数和名称、按月和名称、按数字的设置格式,这些都只要点选并保存就可以了。对于Custom Structure(自定义格式),这里的内容就变得丰富了,可以按照规定的变量自己定义。
%year%
文章发表年份,四位数字,比如2009
%monthnum%
文章发表月份,比如05
%day%
文章发表日期,比如28
%hour%
文章发表小时数,比如15
%minute%
文章发表分钟数,比如43
%second%
文章发表秒数,比如33
%postname%
文章标题,中文标题不推荐使用
%post_id%
文章的id,比如423
%category%
文章的分类
%author%
文章作者
注:这些类型的变量可以在大多数的系统上正常运作,但是某些情况下仍会出现问题。
1.如果用%postname%作为唯一的因素,并且你的样式表或者wp-admin文件夹也有类似的格式的话,重写规则可能使人们无法进入的网页,最好包括一些数字数据(如文章编号或日期)来防止这种情况发生。“/%year%/%monthnum%/%day%/%postname%/”是个不错的开始。
2.如果使用Apache 2之前的版本,%category%无法在一些mod_rewrite的实施中正常工作,如果你使用Apache1.x并且没有处理这些问题的经验,最好不要在permalink结构中使用%category%
3.对于拥有多个目录的文章,只有一个目录能正常显示在permalink中,将会显示编号数字较小的那个目录显示,不过文章本身依旧可以通过所有的目录访问到。
4.如果使用自定义的URI,需要注意的是要保证每个永久连接的异样性,因此在每个虚拟网址结束时使用%post_id%或者%postname%。
多数网站使用的格式为:
/%year%/%monthnum%/%day%/%postname%/
如:
http://www.smashingmagazine.com/
http://www.techcrunch.com/
对于这种文章较多的大型英文网站来说是个不错的选择。
象我这种比较喜欢走极端的也挺多,只使用文章名:
/%postname%/
如:
http://phpstone.com
http://css-tricks.com/
http://davidwalsh.name/
短链接自然有它的好处,象本站这种发布文章不是很多的站点来说,也是可以采用的,不过对于非英语站点来说,每篇文章的链接都是需要手工编辑的,否则默认显示为本地化语言的链接,而且非英语的WordPress后台编辑界面在添加新文章时,得先保存草稿才会显示Permalink的编辑功能。
Update: 2013/07/25
WordPress 3.3 版本以前,有原因不建议仅使用/%postname%/作为 permalink 的唯一结构,原因是在博客条目增多到一定程度,将导致大量额为的数据库查询,当时 WordPress 用户为使用简明 URL 又同时保证性能,提出了 /%post_id%-%postname%/结构,我的博客也改到了这种结构,当时更改这种 permalink 结构后无需多余的设置,WordPress 内部自己处理了老 URL 的 301 Redirect,也对搜索引擎无伤。
WordPress 3.3 版本后,可以发现 permalink 的选择里多出了使用文章名,即仅使用 /%postname%/ 作为 permalink 的选项,此后版本已经修复了之前单独使用 /%postname%/ 出现的问题。然而从 /%post_id%-%postname%/ 改到/%postname%/ ,WordPress 并没有给用户处理老 URL,因此需手工增加代码到 .htaccess,以保障老 URL 的正常访问
RedirectMatch 301 ^/(\d+)-([^/]+)/$ http://phpstone.com/$2/
如果你的站点不是这种结构,而想改为文章名的 permalink,这里有帮助你生成 .htaccess 语法代码的工具 http://yoast.com/change-wordpress-permalink-structure/
WordPress 3.3 以后英文博客最佳的 permalink 结构为 /%postname%/ 或者 /%category%/%postname%/,当然这也只是建议性设置,还是可以按照自己的兴趣处理。