如何阻止 WordPress 覆盖 .htaccess 文件
已发表: 2023-02-23最近我们的一位读者询问是否有可能阻止 WordPress 覆盖您的 .htaccess 文件中的自定义代码?
WordPress 连同几个插件将自定义设置添加到 .htaccess 配置文件。 如果您已将自己的自定义代码添加到 .htaccess,那么您可能会担心它会被覆盖或删除。
在本文中,我们将向您展示如何阻止 WordPress 覆盖 .htaccess 文件。
为什么 WordPress 会覆盖 .htaccess 文件?
您的 .htaccess 文件是一个功能强大的配置文件,用于存储有关您的 WordPress 网站的重要设置。 它包含告诉您的托管服务器如何处理您的网站的规则。
WordPress 使用 .htaccess 文件来存储其永久链接设置。 每当您更改或重新生成永久链接时,WordPress 都会自动用新设置覆盖 .htaccess 中的旧设置。
一些 WordPress 插件还将其设置保存在 .htaccess 中。 例如,W3 Total Cache 插件将修改您的 .htaccess 文件,以配置作为插件一部分的缓存和优化工具。
最后,您可以对 .htacess 进行自己的自定义更改,以控制您网站的工作方式。 例如,您可以向文件添加自定义规则来保护您的管理区域、保护您的站点免受黑客攻击、设置重定向、禁止可疑 IP 地址等。
一些用户担心,如果他们将自己的自定义规则添加到 .htaccess,那么当 WordPress 用新设置覆盖该文件时,它们可能会被删除。 其他用户更喜欢手动配置 .htaccess 并且根本不让 WordPress 写入它。
话虽如此,让我们来看看如何阻止 WordPress 覆盖您的 .htaccess 文件。 只需使用下面的快速链接即可跳转到您感兴趣的部分。
- 如何阻止 WordPress 覆盖您的 .htaccess 规则
- 如何阻止 WordPress 修改 .htaccess
如何阻止 WordPress 覆盖您的 .htaccess 规则
好消息是,如果您了解 .htaccess 文件的工作原理,那么您可以确信您的自定义规则不会被覆盖。
那是因为 WordPress 或您的插件将更改的文件区域已明确标记。 只需确保您不向这些区域添加代码即可。
不要修改 WordPress 标记内的代码
正如我们之前所说,WordPress 使用 .htaccess 来存储对 SEO 友好的 URL 结构的设置。 每当您更改永久链接设置时,它保存到文件中的代码将被自动覆盖和更新。
正如您在下面的屏幕截图中看到的,WordPress 将此信息保存在两个标记之间, # BEGIN WordPress
和# END WordPress
。
注意这些标记内的警告:
“BEGIN WordPress”和“END WordPress”之间的指令(行)是动态生成的,只能通过 WordPress 过滤器进行修改。 对这些标记之间的指令所做的任何更改都将被覆盖。
这意味着 WordPress 不会覆盖或修改您在这些标记之外添加的任何代码。 用户通常将他们的自定义代码添加到文件顶部, # BEGIN WordPress
标记上方。
提示: .htaccess 是一个隐藏文件,位于您的 WordPress 站点的根文件夹中。 如果您找不到它,请查看我们的指南,了解为什么您无法在您的 WordPress 网站上找到 .htaccess 文件。
不要修改插件标记内的代码
当插件将其设置保存到 .htaccess 时,它还会将其放置在看起来像# BEGIN Plugin
和# END Plugin
标记之间。
例如,如果您安装和设置 W3 Total Cache 插件以提高网站速度和性能,那么它将在# BEGIN W3TC Browser Cache
和# END W3TC Browser Cache
标记之间向 .htaccess 添加规则。
每当您更改插件的设置时,这些规则都会被覆盖,因此您需要注意不要在这些标记之间添加您自己的自定义 .htaccess 规则。
为您的自定义代码创建标记
在极少数情况下,行为不当的插件可能会修改其# BEGIN
和# END
标记之外的代码。 但是,它通常不会修改 WordPress 或其他插件使用的标记之间的代码。
如果您担心行为不当的插件会覆盖您的代码,那么您可以将自己的标记添加到 .htaccess 文件中。
例如,您可以在 .htaccess 文件的顶部键入# BEGIN MyCustomCode
和# END MyCustomCode
标记,然后在这些标记之间添加您自己的自定义规则。
如果您还需要将代码添加到 .htaccess 的末尾,那么您可以在那里添加一组不同的标记。 一定要给他们不同的名字。 例如,您可以使用“MyCustomCodeTop”和“MyCustomCodeBottom”。
如何阻止 WordPress 修改 .htaccess
现在您了解了 .htaccess 的工作原理,您可以确信您的自定义代码不会被 WordPress 或您的插件覆盖。
但是,一些开发人员和高级用户希望阻止 WordPress 对 .htaccess 进行任何更改。
例如,他们可能希望通过将设置手动输入 .htaccess 来创建永久链接。 在这种情况下,他们会希望通过阻止 WordPress 将其自己的永久链接设置保存到文件中来避免冲突。
除非您知道自己在做什么,否则我们不建议这样做,因为这可能会导致意想不到的后果。 但是,可以通过更改文件的权限或使用代码来完成。
使用文件权限阻止 WordPress 更改 .htaccess
阻止 WordPress 修改 .htaccess 的一种方法是将文件设置为只读。 为此,您需要使用 FTP 客户端或 WordPress 托管服务提供商提供的文件管理器更改文件权限。
您将在 WordPress 安装的根目录中找到 .htaccess 文件。 接下来,您应该右键单击该文件并选择“文件权限”。
这将显示一个弹出窗口,您可以在其中更改文件的属性。
默认设置为 644,但您可以通过直接在“数值”字段中键入或确保仅选中“读取”框来将其更改为 444。
单击“确定”按钮后,该文件将变为只读且无法修改。
当然,这意味着您也无法写入该文件。 当您希望进行更改时,您需要暂时将文件权限设置回 644。
使用代码阻止 WordPress 更改 .htaccess
另一种解决方案是使用一段代码让 WordPress 知道不要写入 .htaccess 文件。 如果您想在不阻止插件的情况下阻止 WordPress 修改 .htaccess,这将很有用。
注意:编辑任何核心 WordPress 文件都可能很危险。 即使是一个小错误也可能导致您的网站出现重大错误。 这就是为什么我们只向高级用户推荐此方法。
只需在 wp-config.php 文件的末尾添加以下代码片段。 如果您需要帮助,请参阅我们的指南,了解如何在 WordPress 中编辑 wp-config.php 文件。
add_filter('got_rewrite', '__return_false');
完成后,WordPress 将不再写入 .htaccess 文件。
WordPress 无法更改 .htaccess 时显示的错误消息
如果您在 .htaccess 设置为只读时尝试更改永久链接设置,则会显示一条错误消息。
在设置 » 永久链接页面的顶部,您将看到消息“您应该立即更新您的 .htaccess 文件。”
这让您知道 WordPress 无法修改 .htaccess 文件。
通常,这就是您想要的。 但是,如果您确实希望将 WordPress 永久链接设置添加到 .htaccess,则需要手动进行。
在设置 >> 永久链接页面的底部,您将看到另一条错误消息,指出您的 .htaccess 文件不可写。 在此之下,您将看到需要添加到 .htaccess 的规则。
如果您希望添加这些设置,则需要暂时将 .htaccess 文件权限更改回 644,以便对其进行编辑。 之后,您应该将规则粘贴到文件的 WordPress BEGIN 和 END 标记之间,替换那里已有的代码。
完成后,只需将值设置回 444 并保存文件即可。 它将再次不可写。
我们希望本教程能帮助您了解如何阻止 WordPress 覆盖 .htaccess 文件。 您可能还想了解如何在 WordPress 中添加推送通知,并查看我们的最佳 WordPress SEO 插件和工具专家列表。
如果您喜欢这篇文章,请订阅我们的 YouTube 频道以获取 WordPress 视频教程。 您还可以在 Twitter 和 Facebook 上找到我们。