wordpress的.htaccess文件配置被自动更改
有非常多的人都在用wordpress来做网站,而假如你网站主机使用的是linux系统,.htaccess配置文件就施展着重要的作用,URL规范化,301重定向,防盗链等等。但是不知道大家有没有留意到,wordpress的.htaccess文件会常常被更改,我这里说的被更改并不是指网站被黑,或者是安装插件导致.htaccess改变,而是指.htaccess不知不觉的还原成默认的。
大家知道,在linux系统上安装完成了wordpress,并且在后台设置了伪静态的“固定连接”之后,会自动生成一个包含如下内容的.htaccess文件:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
在我的固定连接用的是“/%postname%.html”这样的URL结构,所以你看见的文章后面都是.html结尾,然而在.html后面加上一个“/”斜杠也可以访问,这样可能会对搜索引擎不利,所以我就在.htaccess配置文件中加入了一句301重定向,如下:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^(.*).html/$ $1.html [L,R=301]
RewriteRule ^index.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
这样所有已“.html/”结尾的页面都会301重定向到“.html”,也就是去掉了“/”斜杠。
后来突然就不好使了,于是想到了.htaccess文件。打开一看竟然恢复默认了。
网上搜了一下,没有找到我要的答案,唯一在wordpress中文论坛看到有人提到:如果更改了固定连接,wordpress会自动修改.htaccess文件中# BEGIN WordPress和# END WordPress的内容,但是我并没有修改过固定连接。
后来经过我自己测试,并非是因为修改固定连接,只要你点击了设置——固定连接,不管你有没有修改什么,也不管你又没有保存,只要点击了“固定连接”,.htaccess文件中# BEGIN WordPress和# END WordPress之间的内容就会被更改,自动还原。不知道这算不算是wordpress的一个bug。
这个问题最好的解决方法是:把自己添加在.htaccess中的语句,写在# BEGIN WordPress和# END WordPress之外,但是在.htaccess文件中好像有优先顺序问题,如果把我这个301放到# END WordPress之后,就失效了。于是,我干脆将# BEGIN WordPress和# END WordPress写成如下形式:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^(.*).html/$ $1.html [L,R=301]
RewriteRule ^index.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# BEGIN WordPress
# END WordPress
这样就是他恢复默认也没有关系了。