正在加载中

与常见wordpress永久链接参数相对应的.htaccess规则

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


3 Comments

  1. 华晨 说到:

    请教一下:RewriteCond %{REQUEST_FILENAME} !-d 中 %{REQUEST_FILENAME} 和 !-d 分别是什么意思呢?

  2. aoker 说到:

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

  3. 华晨 说到:

    谢谢了,不过我已经查到!-d的意思了,它是假如请求不是目录的话

Post a Comment