您的WordPress站點的.htaccess檔案是Web伺服器Apache使用的基本配置檔案。但很多伺服器使用的Web伺服器是Nginx而不是Apache,您實際上不會擁有.htaccess檔案。
但是,如果您在其他地方託管站點,瞭解.htaccess檔案很重要,這也是您經常在WordPress教學中看到的主題。
在本文中,您將詳細瞭解WordPress站點.htacces 檔案是什麼以及它可以讓您做什麼。
什麼是WordPress站點.htaccess檔案?
.htaccess檔案是Web伺服器Apache使用的基本配置檔案,可讓您建立告訴Web伺服器如何執行的特殊規則。它位於根資料夾中。
預設情況下,您的WordPress站點使用.htaccess檔案來控制站點的永久連結結構,但許多外掛也將.htaccess檔案用於其他目的,例如:
- 新增特殊規則以更有效地提供快取內容。
- 設定自動重定向
- 將HTTP重定向到HTTPS
- 基於IP地址禁止/限制訪問
- 增加最大上傳大小
什麼是.htaccess?更詳細的解釋
回顧一下,.htaccess是Web伺服器Apache使用的配置檔案,它是大多數預算共享主機使用的Web伺服器。作為一個基本的配置檔案,它允許您建立特殊的規則來告訴您的Web伺服器如何執行。
預設情況下,您的WordPress站點使用.htaccess檔案來控制站點的固定連結結構。許多WordPress外掛也使用.htaccess檔案。例如,如果您有一個快取外掛,它可能會向您的.htaccess檔案新增自己的特殊規則,以更有效地提供快取內容。
除此之外,您還可以將自己的程式碼片段新增到您網站的 .htaccess 檔案中,這樣您就可以執行以下操作:
-
- 重定向– 您可以在臨時(如307)或永久的基礎上設定自動重定向。例如,如果您更改網站的URL,您需要設定301重定向以確保不會損害您的流量或SEO。或者,如果您最近安裝了SSL證書,則可以將HTTP重定向到HTTPS。
- 安全性– 您可以限制訪問您的全部或部分站點以提高WordPress安全性。例如,您可以將其設定為只有某些列入白名單的IP地址(例如您的IP地址)才能訪問您站點的管理區域。或者,您也可以禁止整個站點中的特定IP地址。
- 其他配置調整– 您可以調整伺服器的執行方式。例如,您可以增加最大上傳大小來修復“uploaded file exceeds the upload_max_filesize directive in php.ini”錯誤。
如何在WordPress中找到.htaccess檔案
如果您使用的Web伺服器是Apache,則可以通過FTP或cPanel檔案管理器連線到站點的伺服器來定位和編輯站點的.htaccess檔案。
連線到伺服器並能夠瀏覽站點檔案後,您可以在站點的根資料夾中找到WordPress站點的.htaccess檔案,該資料夾與包含wp-config.php檔案和wp-admin和wp-content資料夾:
WordPress站點的.htaccess檔案所在的位置
預設情況下,您的站點將只有一個.htaccess檔案——位於根資料夾中的檔案。
但是,可以在單獨的目錄中使用多個.htaccess檔案,儘管WordPress在其預設狀態下不會這樣做。
.htaccess檔案適用於它所在的目錄以及所有子目錄,因此您可以將.htaccess檔案新增到子目錄以新增僅適用於該目錄(及其任何子目錄)的規則目錄)。然而,通常只使用一個.htaccess檔案並將所有規則保留在那裡更簡單。
WordPress站點.htaccess檔案示例
預設情況下,您的WordPress站點的.htaccess檔案僅包含一個控制站點固定連結功能的規則。這是它應該是什麼樣子的示例:
WordPress站點預設.htaccess檔案的示例
如何將您自己的規則新增到.htaccess
確保在進行任何編輯之前備份您網站的.htaccess檔案,因為即使是一個小錯誤也可能使您的WordPress網站無法訪問。
要新增您自己的.htaccess 規則,您需要在現有WordPress站點.htaccess規則的上方或下方新增相關程式碼片段。
我們將分享一些您可以做什麼的示例,但免費的 .htaccess生成器站點提供了一個非常方便的工具來生成執行各種不同操作所需的程式碼片段。
將所有流量重定向到您網站的HTTPS版本
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
阻止IP地址
//Block users by IP order allow,deny deny from 192.168.1.1 allow from
新增密碼以訪問您網站的一部分
//Password Protect file <Files /wp-admin> AuthName "Prompt" AuthType Basic AuthUserFile /wp-admin Require valid-user </Files>
您還需要新增一個單獨的.htpasswd
檔案。
這是新增一些自己的規則後 .htaccess 檔案的外觀示例……
帶有自定義規則的WordPress站點.htaccess檔案示例
不使用.htaccess站點伺服器:您如何進行更改?
正如我們在上面告訴您的,閃電博網站使用Web伺服器是Nginx,而不是Apache。這類Web伺服器意味著任何WordPress網站都沒有可用的.htaccess檔案。
然而,這並不意味著您在重定向、安全規則等方面仍然不能執行類似的操作。 .htaccess檔案中的設定和規則可以輕鬆地“轉換”為Nginx自己的重寫規則語法。
使用Nginx伺服器,同樣可以擁有許多重要的 .htaccess 功能。對於其他規則,Nginx還提供了自己的配置檔案,您可以在其中類似地設定規則,儘管語法不同。
設定重定向
比如Nginx伺服器HTTP流量重定向至HTTPS的規則如下:
server { listen 80; server_name domain.com www.domain.com; return 301 https://domain.com$request_uri; }
阻止特定IP地址
要阻止特定IP地址或者IP段訪問您的站點,您在站點Nginx配置檔案新增以下規則:
###允許某個ip訪問 allow 192.168.0.1; ###拒絕某個ip訪問 deny 192.168.0.2; ###拒絕123.0.0.1~123.255.255.254這個段的ip deny 123.0.0.0/8; ###拒絕123.1.0.1~123.1.255.254這個段的ip deny 123.1.0.0/16; ###拒絕123.1.1.1~123.1.1.254這個段的ip deny 123.1.1.0/24; ###allow跟deny配置相同,如果需要開放某個IP段,只需要把上面的deny改成allow
密碼保護您的網站
要鎖定整個站點,通過Nginx的配置規則來實現:
htpasswd是Apache密碼生成工具,Nginx支援auth_basic認證,因此我門可以將生成的密碼用於Nginx中,輸入一行命令即可安裝:yum -y install httpd-tools
,引數如下:
-c 建立passwdfile.如果passwdfile 已經存在,那麼它會重新寫入並刪去原有內容. -n 不更新passwordfile,直接顯示密碼 -m 使用MD5加密(預設) -d 使用CRYPT加密(預設) -p 使用普通文字格式的密碼 -s 使用SHA加密 -b 命令列中一併輸入使用者名稱和密碼而不是根據提示輸入密碼,可以看見明文,不需要互動 -D 刪除指定的使用者
生成密碼
#進入home目錄 cd /home #生成密碼 htpasswd -c ./passwd username #執行上命令後會要求輸入兩次密碼,./passwd 是在當前目錄下建立密碼檔案passwd ,username即為需要設定的賬號
如果你不想安裝htpasswd,也可以通過線上htpasswd生成器來完成。
載入配置
接下來在Nginx配置檔案中(通常是server段內),加入如下兩行,並過載Nginx(service nginx reload
)即可生效。
auth_basic "Please input password"; #這裡是驗證時的提示資訊 auth_basic_user_file /home/passwd;
問題解決
如果開啟auth_basic
認證後出現500錯誤,注意:
- passwd改成nginx對應使用者許可權,比如您nginx配置的www使用者來執行:
chown www:www /home/passwd
- 不要放到
/root
之類得目錄下,請嘗試移動到其它公共目錄
訪問測試
再訪問站點,提示需要輸入使用者名稱和密碼才可以訪問,此方法適合不宜公開的站點,比如PHPmyadmin,這樣可避免被弱口令掃描,無疑再上了一把鎖。
小結
WordPress站點的.htaccess檔案是Web伺服器Apache使用的基本配置檔案。雖然您可以將其用於各種用途,但WordPress使用者想要使用的最常見功能是:
- 重定向
- IP地址黑名單/白名單
- 密碼保護資料夾
- 等等。
現在大部分自建的伺服器使用較新的Web伺服器Nginx而不是Apache,這些Web伺服器上的WordPress站點沒有.htaccess 檔案。相反,當然Nginx也可以新增重定向和IP禁止規則,Nginx的配置檔案相當於Apache的.htaccess檔案。
評論留言