警惕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

我们可以用记事本打开该文件进行编辑,添加一些语句以实现特殊的需要。我之前的一个用wordpress搭建的网站,由于结构的调整,导致很多url发生变化,于是我在.htaccess中用RedirectMatch把老的URL重定向到新URL:

# 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]
RedirectMatch 301 ^/category/old-category/ /category/new-category$2
</IfModule>
# END WordPress

今天在查看这个网站的日志的时候发现,Googlebot在抓取很多老的url都返回404错误,浏览器中打开这些老的url,也都是404错误页。不是都做过301重定向吗,为什么又变成了404呢?赶紧查看.htaccess文件,发现.htaccess的内容竟然都变成了默认的了,也就是我添加的301重定向语句RedirectMatch 301 ^/category/old-category/ /category/new-category$2 都自动消失了。以为是网站被黑了,但是不像啊,黑了我的网站,为什么只是把.htaccess改回默认的,而没有其他动作呢?我又查看了其他几个用wordpress搭建的网站,很多网站的.htaccess文件都是默认内容了!

网上搜了一下,没有找到我要的答案,唯一在wordpress中文论坛看到有人提到:如果更改了固定连接,wordpress会自动修改.htaccess文件中# BEGIN WordPress和# END WordPress的内容,但是我并没有修改过固定连接。

后来经过我自己测试,并非是因为修改固定连接,只要你点击了设置——固定连接,不管你有没有修改什么,也不管你又没有保存,只要点击了“固定连接”,.htaccess文件中# BEGIN WordPress和# END WordPress之间的内容就会被更改,自动还原。不知道这算不算是wordpress的一个bug。

这个问题最好的解决方法是:把自己添加在.htaccess中的语句,写在# BEGIN WordPress和# END WordPress之外,如下:

# 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

RedirectMatch 301 ^/category/old-category/ /category/new-category$2

 

本文链接: https://www.168itw.com/wordpress/htaccess/
转载请注明转载自:168itw

10 thoughts to “警惕wordpress的.htaccess文件被更改(自动还原)”

  1. 其实,我在上个月就发现了这个问题,呵呵。上个月月底就修改过来了,呵呵。看来你还是经常看管理员工具的嘛

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注