十二
29
2009

wordpress 的 URLRewrite 规则

目前网上能搜索到的 wordpress URLRewrite 规则基本都是按照默认链接和目标链接编写的,不但复杂难懂而且漏掉了部分链接。

网上流传的那几篇文章应该是在wordpress早期的版本中使用的。其实现在的 wordpress 版本已经能够识别 URL ,你只要把请求重定向到 index.php 就可以了。

如果使用的是 Apache 服务器的话,wordpress 在设置固定链接时会在目录下创建 .htaccess 文件,内容是用于 Apache 服务器的规则。

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

如果使用的是 IIS + ISAPI_Rewrite 3 的话也可以将上面的代码复制到 httpd.ini里使用。

RewriteCond %{REQUEST_FILENAME} !-d 和 RewriteCond %{REQUEST_FILENAME} -!d 这两句用来检测目标文件是否存在。对于不存在的文件交由 index.php 文件处理。并不是所有的 URLRewrite 组件都支持这两句。对于不支持的组件我们要改写 RewriteRule . /index.php [L] 这一句来手动添加存在的文件(夹),有两种写法:排除存在的文件;包括可能用到的路径。

例如, 我用的固定链接是 /%post_id%,使用的规则如下。

排除存在的文件:
RewriteRule ^/(?!wp-|xmlrpc).* /index.php [L]

包括可能用到的路径:
RewriteRule ^/(about|comments|feed|tag|date|category|page|\d+)(/.*)? /index.php [L]

注:括号内的是排除/包括的路径,如果用包括则添加页面时需要添加名称

Apache模块 mod_rewrite 参考

Leave a Reply

点击图片上的十字中心提交评论。