什麼是 .htaccess 文件以及如何在 WordPress 中使用它?

已發表: 2020-10-27

您之前可能聽說過 .htaccess 文件,但不知道它是什麼或它做了什麼。 在本文中,我們將把焦點放在 .htaccess 文件上,並一勞永逸地揭開它的神秘面紗。 在本文結束時,您將了解 .htaccess 文件是什麼,.htaccess 文件的作用以及如何使用 .htaccess 文件來完成某些任務。 我們走吧!

.htaccess 文件是什麼?

讓我們先來看看 .htaccess 文件到底是什麼。 “htaccess”代表“超文本訪問”。 此名稱描述了文件最初開發時的用途。 簡而言之,它用於控制用戶對某些文件和目錄的訪問。 自從 .htaccess 首次出現以來,事情已經發生了變化,現在它在 WordPress 中以多種不同的方式使用,我們將詳細介紹。

.htaccess 是一個配置 WordPress 核心文件,用於覆蓋 Apache Web 服務器的特定設置(Apache 是 Web 服務器上常用的軟件)或實現影響您網站運行方式的各種其他功能。 它在您啟用永久鏈接後立即包含在所有 WordPress 安裝中,並且通常位於安裝的根目錄中。 您可以通過 FileZilla 或 WinSCP 等 FTP 客戶端訪問安裝文件來查看或編輯它。

注意:確保您的 FTP 客戶端的首選項已修改,以便顯示隱藏文件。

默認情況下,一旦啟用永久鏈接,WordPress 網站的 .htaccess 文件的內容如下所示:

 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress

如果您還不知道,行首的“#”是註釋。 使用# BEGIN WordPress# END WordPress註釋行,以便在稍後由插件或您自己應用更多規則時,內容保持井井有條。 將來對 .htaccess 文件的任何添加都應放在這些行之外。

.htaccess 文件主要在 WordPress 中用於控制您網站上的永久鏈接。 它也可以用作各種其他任務的強大工具,例如控制對某些文件的訪問、增強安全性和性能、發送自定義標頭等等。

注意:對您網站的 .htaccess 文件所做的任何更改都必須小心謹慎,這一點很重要。 即使此文件中的一個簡單錯字也可能導致您的網站崩潰。 因此,如果您不確定所做的任何更改,您最好在臨時服務器上測試這些更改,然後再應用到您的實時網站。

您可以使用 .htaccess 文件執行的操作

因此,讓我們看看如何借助 .htaccess 文件更好地控制您的網站。

在“www”和“非www”之間重定向

.htaccess 文件的一個常見用途是設置從“裸域”(非 www 版本)到其 www 版本的永久重定向或其他方式。

在繼續之前,請確保在您的 DNS 中設置了兩個域以解析為正確的服務器 IP 地址。

此外,在您的 WordPress 管理區域中,檢查裸域是否設置為主要域。

設置站點 URL

您可以通過將以下代碼添加到默認內容下方的 .htaccess 文件中,將 www 域重定向到裸域。

 RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.mycompanyname\.com [NC] RewriteRule ^(.*)$ http://mycompanyname.com/$1 [L,R=301]

要完成完全相反的操作(如果 www 設置為主要)並從“非 www”域重定向到“www”,您需要插入以下代碼:

 RewriteEngine on RewriteCond %{HTTP_HOST} ^mycompanyname.com [NC] RewriteRule ^(.*)$ http://www.mycompanyname.com/$1 [R=301,L]

如果您不熟悉代碼中使用的正則表達式,並且想了解更多關於語法的信息,請隨時花時間閱讀更多關於 REGEX 的信息。 HT Access Cheat Sheet 是另一個非常有用的工具

301重定向(永久重定向)

301 重定向告訴搜索引擎一個 URL 已被另一個 URL 永久替換,並且還將用戶重定向到該訪問者到一個新的(正確的!) url。 .

這是放置在 .htaccess 文件中的一段代碼:

 RewriteEngine on RewriteCond %{HTTP_HOST} ^mycompanyname.com [NC,OR] RewriteCond %{HTTP_HOST} ^www.mycompanyname.com [NC] RewriteRule ^(.*)$ http://example.com/$1 [L,R=301,NC]

在上面的示例中,我們將用戶從網站“mycompanyname.com”重定向到“example.com”。 當然,您需要將這些部分替換為您自己的網址。

這也適用於域下的所有路徑。 這意味著例如 mycompanyname.com/new.html 將重定向到 example.com/new.html

302重定向(臨時重定向)

當內容臨時移動到另一個位置時,會使用 302 重定向。 語法與 301 中的相同。例如:

 Redirect 302 /old.html http//www.mycompanyname.com/new.html

從實際角度來看,結果完全相同,但有一個重要區別。 通過 301 重定向,搜索引擎會被告知該頁面不再存在,這樣做會鼓勵搜索引擎從搜索結果中刪除該頁面。 在 302 重定向的情況下,原始 URL 仍會被 Google 抓取,而不是新 URL 會繼續編入索引。 因此,當您只想臨時重定向到替代內容時,它是重定向的理想解決方案。

強制使用 HTTPS

如今,使用 SSL 證書保護您的網站非常重要。 不這樣做的網站現在將在瀏覽器欄中顯示警告,這可能會破壞對您網站的信任。 此外,Google 實際上會懲罰不通過 HTTPS 提供內容的網站,因此您的搜索排名可能會受到影響。

即使您在網站上安裝了 SSL 證書,您仍然可以發現用戶可以訪問您網站的非 HTTPS 版本。 如果他們這樣做,即使您安裝了 SSL 證書,他們仍會在瀏覽器中收到警告。 要阻止這種情況發生,您需要強制所有流量從不安全的 HTTP 版本到安全的 HTTPS 版本。 通過添加以下代碼,使用您的 .htaccess 文件非常容易做到這一點:

 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

阻止 IP 地址

如果您收到垃圾郵件流量或您的網站正遭受來自某些 IP 地址的濫用/黑客攻擊,您可以使用 .htaccess 文件採取措施,方法是使用 .htaccess 文件中的以下代碼阻止來自該 IP 地址的流量。

 Deny from 94.66.58.135

如果您想了解如何以其他方式阻止 IP 地址,請閱讀本指南。

防止圖片盜鏈

圖片盜鍊是指有人將您網站上的圖片嵌入到他們自己的網站中。 這可能是有問題的(不僅僅是從版權的角度來看),因為這意味著您的服務器可能不得不加班以在其他人的網站上提供圖像。 您可以通過使用 .htaccess 文件阻止某人使用以下代碼將您的圖像嵌入他們的網站來阻止這種情況:

 RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mycompanyname.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ - [F]

不要忘記將“mycompanyname.com”替換為您網站的 URL!

此代碼阻止所有網站在您的網站上熱鏈接圖像。 因為您不想阻止搜索引擎熱鏈接圖像,所以您需要手動將這些圖像列入白名單。 實現這一點的代碼部分是這裡的這一部分:

 RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mycompanyname.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC]

您當然可以包括您想要列入白名單的任何其他網站。 最後,代碼的最後一行 ( RewriteRule .(jpg|jpeg|png|gif)$ - [F] ) 規定了哪些媒體類型被阻止。

保護插件和主題文件

插件和主題 PHP 文件有時可能成為黑客的目標,他們試圖將惡意代碼注入其中。 您可以使用 .htaccess 文件通過以下代碼幫助防止對這些文件的訪問:

 RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/ RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L] RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/ RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]

保護 WordPress 核心文件

強烈建議非管理員用戶無法訪問某些 WordPress 核心文件。 這是大多數託管服務提供商為您處理的事情,但並非總是如此。 如果您想阻止訪問敏感的 WordPress 文件,您可以在 .htaccess 文件中使用以下代碼:

 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L] </IfModule>

防止惡意機器人爬取您的網站

機器人基本上是自動化的網絡腳本,每天可以掃描數百萬個網站。 谷歌使用機器人掃描網站並從這些掃描中獲取數據以更新其龐大的搜索數據庫。 希望谷歌機器人是完全無害的! 儘管您可能不想掃描您的網站,但還有其他機器人。 其中一些“壞”機器人可能只會消耗不必要的服務器帶寬,而其他機器人可能正在積極尋找您網站中可利用的弱點。 您的 .htaccess 文件可用於阻止這些“壞”機器人。

首先要找出您要阻止哪些機器人? 您可能已經知道,但如果不知道,您可以查看被視為可疑的黑名單機器人的更新列表。 獲得列表後,您可以將它們添加到 .htaccess 文件中,如下所示:

 #Block bad bods requests SetEnvIfNoCase user-Agent ^FrontPage [NC,OR] SetEnvIfNoCase user-Agent ^Java.* [NC,OR] SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR] SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR] SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR] SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR] SetEnvIfNoCase user-Agent ^Zeus [NC]

保存更改後,列表中現在訪問您網站的任何機器人都將獲得 403 禁止頁面。

保護 wp-config.php

通常建議您限制對 wp-config.php 文件的訪問,因為它包含數據庫訪問憑據。

要通過 .htaccess 執行此操作,只需將以下行複制並粘貼到您的 .htaccess 文件中:

 <files wp-config.php>order allow,denydeny from all</files>

禁用 PHP 執行

防止黑客攻擊的一種非常有效的方法是防止 PHP 在不需要的特定目錄中執行。 例如/wp-includes//wp-content/uploads/目錄是黑客用來放置允許未經授權訪問服務器的代碼(稱為後門文件)的常用位置。 在這些目錄中禁用 PHP 執行不會刪除這些文件,而是會阻止它們執行代碼。 為此,請將以下代碼添加到您的 .htaccess 文件中。

 <Files *.php>deny from all</Files>

您還會發現,包括 Pressidium 在內的許多託管服務提供商已經默認禁用這些目錄中的 PHP 執行,以提高其客戶的安全級別。

禁用 XML-RPC 訪問

這是託管公司的支持團隊經常遇到的一個常見問題,其中 WordPress 安裝接收到數千個“POST /xmlrpc.php HTTP/1.1”請求,這些請求通常與來自單個或多個 IP 地址的攻擊有關。 對此的一種解決方案是禁用 XML-RPC。

要為您的網站禁用 XML-RPC,請將這些代碼行添加到 oyur .htaccess 文件中:

 # Block WordPress xmlrpc.php requests <Files xmlrpc.php> order deny,allow deny from all </Files> # END protect xmlrpc.php

值得注意的是,如果您使用移動應用程序或遠程連接更新內容,則需要 xmlrpc.php。 因此,如果您正在考慮永久禁用它,請確保您的工作不需要它。

強制下載文件

作為網站用戶,當您想從網站下載文件(例如 PDF)時,該文件會在瀏覽器窗口中打開,這可能會非常煩人。 如果您的網站上有文件作為可下載項目提供給您的用戶,那麼您可以編輯您的 .htaccess 文件並添加一行代碼,該代碼可以強制下載特定文件類型,而不是直接從瀏覽器中顯示。 您將在下面看到此代碼以及您希望用戶能夠直接下載的文件類型的一些示例。

 AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4

發送自定義 HTTP 標頭

高級用戶可能希望能夠利用 Apache 的 Header 指令發送客戶 HTTP 標頭。 為此,請將以下代碼添加到您的 .htaccess 文件中。

 Header add my-custom-header "my custom header value"

上面的示例將告訴 Apache 為對服務器的每個請求添加一個名為“my-custom-header”的標頭。 如果我們實施此更新,然後在瀏覽器工具中檢查我們的網絡選項卡,我們可以確認其響應,如下所示。

我的自定義標題

這種技術對於添加緩存和安全標頭或添加語言字符集非常常見。 看看這篇文章,了解一些流行的用途。 您還可以在此列表中找到詳細的標題列表供您嘗試。

結論

希望本文能讓您對使用 .htaccess 文件可以實現的目標有所了解。 當然,其中許多事情都可以通過使用插件來完成,但了解“幕後”到底發生了什麼總是有幫助的,特別是如果插件無法按照您期望的方式運行。 掌握如何編輯 .htaccess 文件而不是依賴插件也有助於提高您的 WordPress 專業水平……這總是一件好事!