如何阻止 WordPress 覆盖 .htaccess 文件?

已发表: 2024-08-28

这是许多 WordPress 用户都遇到过的一个常见问题:WordPress 本身或通过其插件无意中覆盖或编辑了您的自定义 .htaccess 文件。

这种情况通常不会被注意到,不会立即影响您网站的内容,直到出现问题或不需要的更改生效为止。

默认情况下,WordPress 可以根据配置和权限设置自动编辑或以静默方式覆盖 .htaccess 文件。即使 WordPress 插件也倾向于修改 .htaccess 文件以匹配其配置。

虽然这通常是无害的,但当第三方插件或主题添加覆盖核心网站设置的代码时,可能会出现问题,从而可能导致安全风险或性能问题。

为了帮助您防止出现此类情况,我们将指导您如何阻止 .htaccess 文件被覆盖。因此,事不宜迟,让我们开始吧。


目录
.htaccess 文件如何工作?为什么 Wpoven 甚至会覆盖 .htaccess 文件的内容?
如何阻止 WordPress 覆盖 .htacess 文件的规则?
结论
常见问题解答

.htaccess 文件如何工作?为什么 Wpoven 甚至会覆盖 .htaccess 文件的内容?

防止 WordPress 或插件覆盖 .htaccess 文件的最佳方法是首先了解 .htaccess 文件的工作原理。它将帮助您找出问题的根本原因并了解不应该做什么。

因此,.htaccess 文件就像一本规则手册,其中包含一组有关您的网站应如何运行的说明。

它的主要目的是管理内容的显示方式以及某些插件的操作方式。例如,您还可以从 .htaccess 文件中设置 301 重定向规则,这使得 URL SEO 友好且干净。

但是,如果您或其他人尝试更新网站,例如更改 URL 结构,WordPress 也会自动更新 .htaccess 文件以反映这些更改。

同样,当您安装可能用于向站点添加额外功能的 WordPress 插件时,也可以将其自己的规则/说明添加到文件中。

但这不是问题,棘手的部分是,当这些更改发生时,您输入的原始指令可能会被覆盖、替换或删除。

这可能会扰乱您网站的工作或外观,即使您无意这样做。因此,要阻止或防止此类情况发生,您必须遵循下面提到的一些提示/说明:


如何阻止 WordPress 覆盖 .htacess 文件的规则?

由于.htaccess文件包含网站运行所依据的规则或指令,因此还可以向其中添加一组自定义规则,以防止其在上述情况下被覆盖。

以下是您可以如何做到这一点。

  • 避免在 WordPress 标记或标签之间添加或编辑规则
  • 避免在插件标记或标签之间添加或编辑规则
  • 设置文件权限以避免 WordPress 覆盖 .htaccess 文件
  • 通过将代码插入 wp-config.php 文件来阻止 WordPress 覆盖 .htacess

1.避免在WordPress标记或标签之间添加或编辑规则

正如我们已经提到的,WordPress 使用 .htaccess 文件来管理某些 WordPress 设置,例如创建结构化且干净的 SEO 友好 URL。

当您更改也称为“永久链接”的 URL 结构时,WordPress 也会自动更新此文件中的代码。

这些永久链接设置保存在两个 WordPress 标签或标记之间: # BEGIN WordPress# END WordPress

Avoid adding or editing rules between the WordPress markers or Tags
避免在 WordPress 标记或标签之间添加或编辑规则

这两个 WordPress 标签之间的这个特定区域完全为 WordPress 保留,并且它还警告您,您在这些标记之间所做的任何更改都将在下次 WordPress 更新文件时被覆盖。

要做的事情:但最好的部分是,WordPress 不会触及您在这些标记或标签之外添加的任何代码。这意味着,如果您想添加任何自定义代码,请尝试将其插入或添加到文件顶部的# BEGIN WordPress标记之前。

不要:但请避免在 WordPress 标记之间插入或添加自定义代码,因为每当 WordPress 更新其设置时,它就会被删除或替换。为了保证自定义设置的安全,请始终将它们放在这些标记之外。


WPOven

2.避免在插件标记或标签之间添加或编辑规则

就像 WordPress 标记一样,您还需要避免在插件标记或标签之间编辑或添加规则。

这是因为插件也可以像 WordPress 一样将自己的规则添加到.htaccess文件中,并且当它们这样做时,它们会保留带有包含插件名称的特殊标记或标签的区域。

例如,如果名为“WPRocket”的插件添加了规则,它将用# BEGIN WP Rocke Browser Cache 和# END WP Rocket Browser Cache 标记它们。

Avoid adding or editing rules between the Plugin markers or Tags
避免在插件标记或标签之间添加或编辑规则

这意味着,插件在这两个标记之间添加的任何指令或规则仅完全由插件控制。如果您更改插件的设置,它将更新这些规则并可能覆盖这些标记或标签之间的任何内容。

因此,如果您有任何不想丢失的自定义规则,请不要将它们放在这些特定于插件的标记之间。

使用自定义标记或标签添加自定义规则

相反,您可以创建标记或标签来添加您拥有的任何自定义规则,并将它们与 WordPress 和插件生成的部分分开。

此方法将保证对 WordPress 管理或插件设置所做的任何编辑或更改不会覆盖此部分。

您可以这样做:

假设您需要将yourdomain.com发出的任何请求重定向到https://www.yourdomain.com ,以便您的访问者始终登陆 URL 中带有“www”的网站版本。

要实施此自定义规则,请使用.htaccess文件顶部的# BEGIN Custom Rules # END Custom Rules标签。然后,在这些标记中添加您的说明或自定义规则。

它会有点像这样:

# BEGIN Custom Rules

RewriteEngine On

RewriteCond %{HTTP_HOST} ^yourdomain\.com$

RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R=301,L]

# END Custom Rules


阅读: WordPress .htaccess 文件:如何创建和编辑它?


3.设置文件权限,避免WordPress覆盖.htaccess文件

第三种可以帮助您防止 WordPress 覆盖.htaccess文件的方法是将文件权限设置为“只读”。

要实现此目的,您需要使用 FTP 客户端或 WordPress 托管提供商提供的文件管理器访问.htaccess文件。

登录 FTP 客户端或文件管理器后,查找.htaccess文件,该文件很可能位于 WordPress 安装的根目录中。

然后,右键单击该文件并选择“文件权限”。

Set file permission to avoid WordPress from overwriting .htaccess file
设置文件权限以避免 WordPress 覆盖 .htaccess 文件

将出现一个包含所有文件属性的弹出窗口,其中默认设置通常为 644,但您可以通过直接在“数字值”字段中输入值或确保仅“读取”将其更改为 444。复选框已选中。

Set file attributes in the .htaccess file to read-only.
将 .htaccess 文件中的文件属性设置为只读

通过将.htaccess文件权限设置为 444(只读),可以保护该文件不被修改。

注意:请始终记住,这也将不允许您对文件进行任何更改。如果需要更新文件,则必须暂时将权限更改回 644。


4. 通过将代码插入 wp-config.php 文件来阻止 WordPress 覆盖 .htacess

您可以实现的最后一种方法是在 wp-config.php 文件中插入以下代码片段。

add_filter('got_rewrite', '__return_false');

如果您想阻止 WordPress 修改.htaccess文件而不影响您的插件,则此方法非常有用。

注意:编辑或处理核心 WordPress 文件可能存在风险,如果出现任何问题,可能会对您的网站造成潜在损坏。建议寻求专家的帮助或联系您的网络开发人员。

现在,为了实现这一点,

1. 使用您的凭据登录到您的 cPanel 或 FTP。

2. 导航到网站的根目录并找到wp-config.php文件。

3. 打开wp-config.php文件进行编辑。

Opening Wp-config.php file
打开 Wp-config.php 文件

4.手动将以下行添加到文件中,如图所示

add_filter('got_rewrite', '__return_false');

Inserting code in the Wp-config.php file to stop WordPress from overwriting the .htaccess file
在 Wp-config.php 文件中插入代码以阻止 WordPress 覆盖 .htaccess 文件

5. 添加代码后,保存文件。

6. 保存后,WordPress 将无法再对文件进行任何修改,包括更改 URL 格式或其他相关设置。

一旦您遵循此方法,WordPress 将无法进行任何修改或覆盖 .htaccess 文件。


WPOven Dedicated Hosting

结论

人们总是说预防胜于治疗。同样,您可以采取预防措施,例如避免在 WordPress 标记或标签之间以及 WordPress 插件标记和标签之间添加或编辑规则。

此外,您可以设置一些规则并使用只读方法来完全禁止对.htaccess文件进行任何修改。

我们希望上述方法能够帮助您阻止 WordPress 覆盖.htaccess文件。如果您对这篇文章有任何疑问,请在下面的评论部分告诉我们。


常见问题解答

我的自定义 .htaccess 规则会受到 WordPress 升级过程的影响吗?

不会,如果您的自定义.htaccess规则放置在# BEGIN WordPress# END WordPress标记之外,则不会受到 WordPress 升级的影响。 WordPress 仅修改这些标记之间的代码。

使用自定义 .htaccess 的一部分有什么缺点吗?

是的,自定义.htaccess规则可能会带来复杂性,可能导致冲突或错误。如果您没有正确配置规则,也可能会影响站点的性能或导致服务器问题。此外,如果服务器配置、插件或 WordPress 本身发生更改,这些规则可能需要更新。它还存在安全风险,因为如果不仔细管理,不正确的规则可能会无意中产生漏洞。

如何确保更新插件时我的个性化 .htaccess 规则不会丢失?

为了在更新插件时确保自定义.htaccess规则的安全,请确保将您的规则放置在 WordPress 和插件使用的# BEGIN# END标记之外。您还可以创建自己的标记来分隔规则。定期备份您的.htaccess文件,以便您可以在需要时轻松恢复它。更新插件后,检查.htaccess文件以确保您的自定义规则仍然存在并且没有丢失。