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]
注:括号内的是排除/包括的路径,如果用包括则添加页面时需要添加名称

Leave a Reply