如何阻止 WordPress 覆蓋 .htaccess 文件

已發表: 2023-02-23

最近我們的一位讀者詢問是否有可能阻止 WordPress 覆蓋您的 .htaccess 文件中的自定義代碼?

WordPress 連同幾個插件將自定義設置添加到 .htaccess 配置文件。 如果您已將自己的自定義代碼添加到 .htaccess,那麼您可能會擔心它會被覆蓋或刪除。

在本文中,我們將向您展示如何阻止 WordPress 覆蓋 .htaccess 文件。

How to Stop WordPress From Overwriting .htaccess File

為什麼 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

WordPress Markers in .htaccess

注意這些標記內的警告:

“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 添加規則。

Example of Plugin Markers in .htaccess

每當您更改插件的設置時,這些規則都會被覆蓋,因此您需要注意不要在這些標記之間添加您自己的自定義 .htaccess 規則。

為您的自定義代碼創建標記

在極少數情況下,行為不當的插件可能會修改其# BEGIN# END標記之外的代碼。 但是,它通常不會修改 WordPress 或其他插件使用的標記之間的代碼。

如果您擔心行為不當的插件會覆蓋您的代碼,那麼您可以將自己的標記添加到 .htaccess 文件中。

例如,您可以在 .htaccess 文件的頂部鍵入# BEGIN MyCustomCode# END MyCustomCode標記,然後在這些標記之間添加您自己的自定義規則。

You Can Create Your Own Markers in .htaccess for Your Custom Rules

如果您還需要將代碼添加到 .htaccess 的末尾,那麼您可以在那裡添加一組不同的標記。 一定要給他們不同的名字。 例如,您可以使用“MyCustomCodeTop”和“MyCustomCodeBottom”。

如何阻止 WordPress 修改 .htaccess

現在您了解了 .htaccess 的工作原理,您可以確信您的自定義代碼不會被 WordPress 或您的插件覆蓋。

但是,一些開發人員和高級用戶希望阻止 WordPress 對 .htaccess 進行任何更改。

例如,他們可能希望通過將設置手動輸入 .htaccess 來創建永久鏈接。 在這種情況下,他們會希望通過阻止 WordPress 將其自己的永久鏈接設置保存到文件中來避免衝突。

除非您知道自己在做什麼,否則我們不建議這樣做,因為這可能會導致意想不到的後果。 但是,可以通過更改文件的權限或使用代碼來完成。

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

阻止 WordPress 修改 .htaccess 的一種方法是將文件設置為只讀。 為此,您需要使用 FTP 客戶端或 WordPress 託管服務提供商提供的文件管理器更改文件權限。

您將在 WordPress 安裝的根目錄中找到 .htaccess 文件。 接下來,您應該右鍵單擊該文件並選擇“文件權限”。

Selecting File Permissions From the Menu in Your FTP Client

這將顯示一個彈出窗口,您可以在其中更改文件的屬性。

默認設置為 644,但您可以通過直接在“數值”字段中鍵入或確保僅選中“讀取”框來將其更改為 444。

Changing the .htaccess File Permissions to 444 or Read-Only

單擊“確定”按鈕後,該文件將變為只讀且無法修改。

當然,這意味著您也無法寫入該文件。 當您希望進行更改時,您需要暫時將文件權限設置回 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 文件。”

Permalink Settings Error Message When .htaccess Cannot Be Accessed

這讓您知道 WordPress 無法修改 .htaccess 文件。

通常,這就是您想要的。 但是,如果您確實希望將 WordPress 永久鏈接設置添加到 .htaccess,則需要手動進行。

設置 >> 永久鏈接頁面的底部,您將看到另一條錯誤消息,指出您的 .htaccess 文件不可寫。 在此之下,您將看到需要添加到 .htaccess 的規則。

List of Rules You Will Need to Add to .htaccess Manually if Needed

如果您希望添加這些設置,則需要暫時將 .htaccess 文件權限更改回 644,以便對其進行編輯。 之後,您應該將規則粘貼到文件的 WordPress BEGIN 和 END 標記之間,替換那裡已有的代碼。

完成後,只需將值設置回 444 並保存文件即可。 它將再次不可寫。

我們希望本教程能幫助您了解如何阻止 WordPress 覆蓋 .htaccess 文件。 您可能還想了解如何在 WordPress 中添加推送通知,並查看我們的最佳 WordPress SEO 插件和工具專家列表。

如果您喜歡這篇文章,請訂閱我們的 YouTube 頻道以獲取 WordPress 視頻教程。 您還可以在 Twitter 和 Facebook 上找到我們。