WP的后台管理页面中,可以设置帖子的Permalinks样式。 缺省时,它是用非SEO友好的形式的,例如:http://www.rsywx.net/wordpress/?p=960 这样的形式。但是,用户可以定制Permalinks的格式,并通过后台URI重写规则从而得到更SEO友好的URI。 我的设置是这样的:/%year%/%monthnum%/%post_id%,因此所有的帖子的连接都会是类似:http://www.rsywx.net/wordpress/2008/10/960 这样的,对应的URI重写规则为:
RewriteRule ^wordpress/([0-9]+)/([0-9]+)/([0-9]+) wordpress/?p=$3
如何,很简单吧?
10月13日补记:
突然想到,这个重写和Pylons的map还是有点不一样的。我在书写Pylons的map规则的时候,感到很不愉快。因为它的这个类似重写的规则,是和路径相关的。 例如,当我想将/xxx/yyy映射为/xxx?id=yyy的时候,所有html的路径映射都是基于/xxx/yyy而进行,而此时物理文件还是存放在/xxx目录下,所有的CSS/image/JavaScript的相对路径都是按照/xxx计算的,因此立马出现了路径的映射错误——除非你使用绝对路径进行引用……
另外,又发现一个小问题。WordPress处理页面和帖子的方法是不一样的。在激活上述的RewriteRule之后,页面链接将出现问题,因此必须再一个新的RewriteRule:
RewriteRule ^wordpress/([0-9]+) wordpress/?pageid=$1
并在后台管理程序中将各个页面的链接的PermaLink修改即可。
10月14日补记 今天又突然发现上述的重写规则对于一些WP的连接,如tag,按月的存档等还是不起作用。搜索一番并借助WP的帮助后,最终的重写规则如下,同时,该重写规则应存放在wordpress工作目录中:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-D
RewriteRule . /wordpress/index.php [L]
这个规则就基本正常了。唯一的问题是wordpress/wp-admin不能正常工作,而必须用wordpress/wp-admin/index.php才行。
Leave a Reply