.htaccess Changing Itself - Causing 500 Internal Server Error
我在 .htaccess 更改自身并导致我的网站上出现 500 - 内部服务器错误时遇到问题。这种变化每隔一天左右发生一次。
我的原始 .htaccess 文件如下所示:
1 2 3 4 5 6 7 8 9 10 11 | # 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 |
而在它自己改变之后,它看起来是这样的:
1 2 3 4 5 6 7 8 9 10 | # 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 |
本质上,这一行被移到了上一行的末尾:
1 | <IfModule mod_rewrite.c> |
我们的网站在几周前被黑客入侵并用于网络钓鱼。我们的主机将其关闭,我们进行了更改,他们认为这些更改足以重新打开我们的网站。
我们改变了...
-
更新到最新版本的 WordPress(我们通常最多
日期,但晚了几天)。 -
安装了两个安全插件(Better WP Security 和 Bulletproof
安全性)。 -
以及删除我们认为可能已经被删除的论坛插件
漏洞的原因。 -
这两个安全插件现已被移除。
-
我现在更改了 htaccess 文件的权限
我们真的不能让我们的网站再次出现故障(500 服务器错误)。
有什么我错过的可能导致 .htaccess 改变的吗?
注意:当我将更改后的 htaccess 文件替换为原始文件时,它修复了 500 服务器错误。
问题可能是由两个安全插件之间的交互引起的。也许禁用其中一个可以解决问题。
另一种保护您的 htaccess 的方法是将其分配给 root 用户(如果您被允许)和/或使其只读。当然它并没有解决根本问题,但至少包含了效果。
快速浏览一下您的两个安全插件,Bulletproof Security 对您的 .htaccess 文件做了很多改动。就个人而言,我永远不会让插件接触 .htaccess,因为如果插件中存在任何错误,它可能会导致您的站点离线并出现 500 服务器错误。
在禁用 Bulletproof Security 后,我会查看插件在 .htaccess 中尝试执行的操作并手动将其添加到文件中。
或者,您可以尝试在初始注释和以下行之间添加一个额外的行空间,如下所示:
1 2 3 4 5 6 7 8 9 10 | # 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> |
最后,您可以完全取消"IfModule",因为您知道它已安装在您的服务器上:
1 2 3 4 5 6 7 8 | # BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] |
我遇到了同样的问题,但我终于发现