如何阻止WordPress覆盖.htaccess文件

最近,我们的一位读者询问是否有可能阻止WordPress覆盖.htaccess文件中的自定义代码。WordPress以及几个插件将自定义设置添加到.htaccess配置文件中。如果您已将自己的自定义代码添加到.htaccess,则可能会担心它会被覆盖或删除。在本文中,我们将向您展示如何阻止WordPress覆盖.htaccess文件。

如何阻止WordPress覆盖.htaccess文件

 为什么WordPress会覆盖.htaccess文件?

您的.htaccess文件是一个功能强大的配置文件,用于存储有关WordPress网站的重要设置。它包含告诉您的托管服务器如何处理您的网站的规则。

WordPress使用.htaccess文件来存储其永久链接设置。每当您更改或重新生成永久链接时,WordPress都会自动用新设置覆盖.htaccess中的旧设置。

一些WordPress插件也将其设置保存在.htaccess中。例如,W3 总缓存插件将修改您的 .htaccess 文件,以便配置作为插件一部分的缓存和优化工具。

最后,您可以对 .htacess 进行自己的自定义更改,以控制网站的工作方式。例如,您可以向文件添加自定义规则,以保护您的管理区域、保护您的站点免受黑客攻击、设置重定向、禁止可疑 IP 地址等。

一些用户担心,如果他们将自己的自定义规则添加到.htaccess,那么当WordPress使用新设置覆盖文件时,它们可能会被删除。其他用户更喜欢手动配置.htaccess,根本不让WordPress写入它。

 如何阻止WordPress覆盖您的.htaccess规则

好消息是,如果您了解 .htaccess 文件的工作原理,那么您可以确信您的自定义规则不会被覆盖。

这是因为WordPress或您的插件将更改的文件区域已明确标记。只需确保不要向这些区域添加代码即可。

不要修改WordPress标记中的代码

正如我们之前所说,WordPress使用.htaccess来存储SEO友好URL结构的设置。只要您更改永久链接设置,它保存到文件中的代码就会被自动覆盖和更新。

正如您在下面的屏幕截图中看到的,WordPress将此信息保存在两个标记之间,并且.# BEGIN WordPress# END WordPress

.htaccess 中的 WordPress 标记

请注意这些标记中的警告:

“BEGIN WordPress”和“END WordPress”之间的指令(行)是动态生成的,只能通过WordPress过滤器进行修改。这些标记之间对指令所做的任何更改都将被覆盖。

这意味着WordPress不会覆盖或修改您在这些标记之外添加的任何代码。用户通常将其自定义代码添加到文件顶部的标记上方。# BEGIN WordPress

提示:.htaccess是一个隐藏文件,位于WordPress网站的根文件夹中。

不要修改插件标记中的代码

当插件将其设置保存到 .htaccess 时,它还会将其放置在看起来像 和 的标记之间。# BEGIN Plugin# END Plugin

例如,如果您安装并设置 W3 总缓存插件以提高您的网站速度和性能,那么它将在 和 标记之间向 .htaccess 添加规则。# BEGIN W3TC Browser Cache# END W3TC Browser Cache

.htaccess 中的插件标记示例

每当您更改插件的设置时,这些规则都会被覆盖,因此您需要注意不要在这些标记之间添加自己的自定义 .htaccess 规则。

为自定义代码创建标记

在极少数情况下,行为不佳的插件可能会修改其 and 标记之外的代码。但是,它通常不会修改在WordPress或其他插件使用的标记之间找到的代码。# BEGIN# END

如果您担心行为不良的插件会覆盖您的代码,那么您可以将自己的标记添加到 .htaccess 文件中。

例如,可以在 .htaccess 文件的顶部键入和标记,然后在这些标记之间添加自己的自定义规则。# BEGIN MyCustomCode# END MyCustomCode

您可以在 .htaccess 中为自定义规则创建自己的标记

如果您还需要在 .htaccess 的末尾添加代码,则可以在那里添加一组不同的标记。只要确保给他们不同的名字。例如,您可以使用“MyCustomCodeTop”和“MyCustomCodeBottom”。

 如何阻止WordPress修改.htaccess。

现在您了解了.htaccess的工作原理,您可以确信您的自定义代码不会被WordPress或插件覆盖。

但是,一些开发人员和高级用户希望阻止WordPress对.htaccess进行任何更改。

例如,您可能希望通过在 .htaccess 中手动键入设置来创建永久链接。在这种情况下,您将希望通过阻止WordPress将其自己的永久链接设置保存到文件中来避免冲突。

除非您知道自己在做什么,否则我们不建议这样做,因为它可能会导致意想不到的后果。但是,可以通过更改文件的权限或使用代码来完成。

阻止WordPress使用文件权限更改.htaccess。

阻止WordPress修改.htaccess的一种方法是将文件设为只读。为此,您需要使用FTP客户端或WordPress托管提供商提供的文件管理器更改文件权限。

您可以在WordPress安装的根目录中找到.htaccess文件。接下来,您应该右键单击该文件并选择“文件权限”。

从 FTP 客户端的菜单中选择文件权限

这将显示一个弹出窗口,您可以在其中更改文件的属性。

默认设置为 644,但您可以通过直接在“数值”字段中键入或确保仅选中“读取”框来将其更改为 444。

将 .htaccess 文件权限更改为 444 或只读

单击“确定”按钮后,该文件将是只读的,无法修改。

当然,这也意味着您无法写入文件。当您希望进行更改时,您需要暂时将文件权限设置回 644。

阻止WordPress使用代码更改.htaccess。

另一种解决方案是使用代码片段,让WordPress知道不要写入.htaccess文件。如果你想阻止WordPress修改.htaccess而不阻止你的插件,这很有用。

注意:编辑任何核心WordPress文件都可能很危险。即使是一个小错误也可能导致您的网站出现重大错误。这就是为什么我们只向高级用户推荐此方法的原因。

只需在 wp-config.php 文件的末尾添加以下代码片段即可。

add_filter('got_rewrite', '__return_false');

完成此操作后,WordPress将不再写入.htaccess文件。

WordPress无法更改.htaccess时显示错误消息

如果您在 .htaccess 设置为只读时尝试更改永久链接设置,则会显示一条错误消息。

设置 » 永久链接页面的顶部,您将看到消息“您应该立即更新您的 .htaccess 文件”。

无法访问 .htaccess 时的永久链接设置错误消息

这让你知道WordPress无法修改.htaccess文件。

通常,这是您的意图。但是,如果您确实希望将WordPress永久链接设置添加到.htaccess,则需要手动执行此操作。

设置 » 永久链接页面的底部,您将看到另一条错误消息,指出您的 .htaccess 文件不可写。在此之下,您将看到需要添加到.htaccess的规则。

如果需要,您需要手动添加到 .htaccess 的规则列表

如果要添加这些设置,则需要暂时将 .htaccess 文件权限更改回 644,以便可以对其进行编辑。之后,您应该将规则粘贴到文件的WordPress BEGIN和END标记之间,替换已经存在的代码。

完成后,只需将值设置回 444 并保存文件即可。它将再次不可写。