如何阻止 WordPress 覆蓋 .htaccess 檔案?

已發表: 2024-08-28

這是許多 WordPress 用戶都遇到的常見問題:WordPress 本身或透過其外掛程式無意中覆蓋或編輯了您的自訂 .htaccess 檔案。

這種情況通常不會被注意到,不會立即影響您網站的內容,直到出現問題或不必要的變更生效為止。

預設情況下,WordPress 可以根據配置和權限設定自動編輯或以靜默方式覆蓋 .htaccess 檔案。即使 WordPress 外掛也傾向於修改 .htaccess 檔案以符合其配置。

雖然這通常是無害的,但當第三方外掛程式或主題添加覆蓋核心網站設定的程式碼時,可能會出現問題,這可能會導致安全風險或效能問題。

為了幫助您防止此類情況,我們將指導您如何阻止 .htaccess 檔案被覆蓋。因此,事不宜遲,讓我們開始吧。


目錄
.htaccess 檔案如何運作?
如何阻止 WordPress 覆蓋 .htacess 檔案的規則?
結論
常見問題解答

.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檔案以確保您的自訂規則仍然存在並且沒有遺失。