为WordPress添加额外的Rewrite规则
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
发表评论
| Trackback
