WrodPress默认的Rewrite规则保存在BLOG目录下的.htaccess,内容如下:
# BEGIN WordPress
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</ifmodule>
# END WordPress
当我们要添加一条额外的Rewrite规则的时候,例如我们要添加一条:“RewriteRule ^blog(.*)$ $1 [R=301,L]”,可能就直接添加在WordPress自带规则:“RewriteBase /”之下,变成:
# BEGIN WordPress
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^blog(.*)$ $1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</ifmodule>
# END WordPress
可是在后台重新设置WordPress的永久链接,并提交保存之后,就会将.htaccess文件恢复为默认状态,之前所做的努力都付之东流了。
正确的做法是不去改动.htaccess文件中“# BEGIN WordPress”与“# END WordPress”段中的内容,并模仿WordPress段的内容,自己增加一个额外段落,这样当WordPress更新.htaccess文件的时候,只会去更新他自己的段落,而不会影响到我们增加额外的段落。
使用正确的方法添加额外的Rewrite规则后的.htaccess文件内容如下:
# BEGIN Custom
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^blog(.*)$ $1 [R=301,L]
</IfModule>
#END Custom
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
本文内容提供者:
猫言猫语:http://www.wuwx.cn/ ,原文地址:http://www.wuwx.cn/archives/5602

请教一下:RewriteCond %{REQUEST_FILENAME} !-d 中 %{REQUEST_FILENAME} 和 !-d 分别是什么意思呢?
这个问题我也不太清楚,帮你在网上查了下。
REQUEST_FILENAME, 这个变量是本地文件系统的文件名称. -f是说此文件存在, 前面加!就是反.
RewriteCond %{REQUEST_FILENAME} !-f 意思是如果请求的文件不存在, 则命中RewriteRule.
其中的d是什么就没查到了。今天太忙,有空了再帮你查查。
另外,大家交流,不用说请教的。
谢谢了,不过我已经查到!-d的意思了,它是假如请求不是目录的话