这里我只能以我的认为来描述整个过程,虽然对这些名词也是略有听说、不知其味。

  所谓的固定链接其实就是修改 WordPress 目录、页面或者帖子的超级链接也即 URL 的形式,这里的固定既可以理解为动词也可以理解为形容词,WP 默认的链接形势类似于动态语言所产生的那种链接形式,比如 http://littlepig.cn/?postid=5 ,对应的页面是id为5的页面,这种链接的缺点就是链接本身不带有任何信息,一眼看去根本就不知道里面内容是什么,据说搜索引擎也对这种链接爱理不理的,自然而然带来的浏览量、流量就少,所以我们得想点办法。

  Apache 支持 URL Rewrite 功能, 就是将某种形式的链接转移到另外一个链接上,利用这个功能,我们可以将 Apache 接受到的 http://littlepig.cn/somecat/somepost.html  这种形式的链接转到 http://littlepig.cn/?postid=5  的页面上,只需要在站点的 .htaccess 里面添加规则即可,但是显然的,我们不可能为所有的页面都一一书写规则,因此我们可以使用泛匹配 (wide cast) 将某些固定形式的请求转移到一个单独的 php 页面上,由 php 的代码分析并确定链接该指向哪个真正的页面,然后再行加载。这个过程有点类似于域名的泛解析。很幸运的,WordPress 就完美的支持 URL Rewrite ,index.php 就可以看作是一个 URL 解析器。

  有了上面的基础,实现链接的自定义就比较方便了

  1、在后台的 设置 - 固定链接 选项里,你可以选择系统提供的几种固定样式的链接,但都不怎么人性化,当然我们也可以自己定义,自定义的字段(或者叫做标签)可以使用的有如下几种

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
%year% 
   年,四位数,如:2004

   %monthnum%
   月,如: 05

   %day%
   日,如:28

   %hour%
   时,更精确的时间,如:15

   %minute%
   分,如:43

   %second%
   秒,如:33

   %postname%
   文章名,这是WordPress 固定链接比较常用的标签。如一篇文章的标题为“This Is A Great Post”,则使用这个标签的固定链接就是“this-is-a-great-post”。对于中文,WordPress 会进行编码而后输出编码结果。

   %post_id%
   文章的唯一标识,如:423

   %category%
   分类

   %author%
   文章作者名

  在自定义固定链接的时候,域名是不用输入的,直接使用 /%category%/%postname%/ 这种形式即可,当然,你也可以在后边加上 .htm 或者 .html ,这样看起来更像是静态页面,但据说不加扩展名最后使用/结尾那种形式更受搜索引擎青睐,其中 %postnam% 有的帖子里叫做 日志缩略名 ,貌似在 WP 2.7 里已经取消了这个选项,我在新建日志的时候反正没有找到任何输入类似信息的地方,只是在快速编辑日志的时候会出现一个叫做别名的选项,应该就是所说的日志缩略名,帖子在正常修改的时候在标题的下面会显示有 修改固定链接 的选项。

  WordPress 设置好了,接下来的工作就是配置 Apache 来实现 URL Rewrite ,据说大部分网络服务提供商都开启了 mod_rewrite ,站点管理员只需要在网站根目录的 .htaccess 文件里配置规则即可,显然,写规则也得懂得很多知识,我还是决定使用拿来主义,搜啊搜,找到了一段

1
2
3
4
5
6
7
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

  将上面代码放入你站点根目录的 .htaccess 里即可。

  现在你的 WordPress 就应该可以工作了,但有些地方要注意,一是你需要修改你以前所有文章的 别名,尽量去掉中文,因为中文会编码成 %2d%e2 这种形式,显然,这样的链接没有任何意义,甚至还不如 /?id=5 那种呢,这个工作量比较大,而且,要求你还得懂点英文,咱总不能拿 look-what-look 这种链接来秀吧?固定链接这个操作最好在开博的时候就进行,以后省事多了;二是我发现 页面(page) 的标题如果有中文,不仅编码后的链接不美观,而且根本就不能访问,所以这些页面的 固定链接 是必须要改成英文的。

  目前就发现这么多问题,我的貌似目前工作正常。