什麼是.htaccess?
.htaccess 是一個設定檔,讓你可以控制該路徑下的檔案及資料夾,以及所有子目錄。這個檔案名稱是由 hypertext access 而來,能為大多數的伺服器環境使用。該檔案能強化網站安全。數以百萬的 WordPress 用戶都會利用它來保護網站免於垃圾郵件發送者、黑客的威脅。
.htaccess 檔案的樣子大概是這樣,一般在網站的Cpanel中放置網頁的Folder內。.htaccess 程式碼是包在 #BEGIN WordPress 及 #END WordPress 裡。WordPress 可以更新這個標籤裡的程式碼。為了畫分程式碼以容易辨析,你必須把要新增的程式碼片段放置於你的 .htaccess 檔案的頂部或底部(在 #BEGIN WordPress 之前或 #END WordPress 之後)。
# 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
如果 .htaccess 不存在,你可以自己建立一個然後將它上傳。你需要做的只有建立一個空白的文字檔(.txt),將它儲存為 .htaccess 然後上傳到網站的根目錄。請確認在檔案的開頭有一個點!
如何使用 .Htaccess優化WordPress 網站安全?
1. 保護存取 .htaccess
首先由於.htaccess 擁有你整個網站的控制權,以下的程式碼將讓黑客無法存取你的 .htaccess 檔,只需要透過 FTP 來修改 .htaccess 檔案(或是控制台(Cpanel)的檔案管理)。
<files ~ "^.*\.([Hh][Tt][Aa])"> order allow,deny deny from all satisfy all </files>
2. 保護 /Wp-Content/
wp-content 資料夾是 WordPress 相當重要的一部分,因為內裏包含了你的佈景主題、外掛、上傳的媒體檔案(圖片、影片)及快取檔案。
Order deny,allow Deny from all <Files ~ ".(xml|css|jpe?g|png|gif|js)$"> Allow from all </Files>
你可以將 .htaccess 檔案獨立上傳到 wp-content 主目錄,例如 www.example.com/wp-content/。這麼做只會允許 XML、CSS、JPG、JPEG、PNG、GIF 和 JavaScript 被上傳到媒體資料夾,其餘的檔案類型將被拒絕。
3. 保護 WP-Config.php
Wp-config.php這個檔案裡包含資料庫的登入資訊,以及其他的系統設定。因此,用.htaccess是禁止任何人訪問它。
<files wp-config.php> order allow,deny deny from all </files>
4. 保護 Include-Only 檔案
某些檔案是絕不用讓使用者存取的。你可以加入以下程式碼,來阻擋使用者存取這些檔案。
# Block the include-only files. <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>
5. 限制存取 WordPress 控制台
WordPress 控制台經常成為黑客的目標。如果他們獲取了存取該區域的權限,後果相當嚴重,為確保 WordPress 控制台更加安全,建立一個 .htaccess 檔案並加入以下程式碼:
# Limit logins and admin by IP <Limit GET POST PUT> order deny,allow deny from all allow from 22.34.56.78 </Limit>
將 22.34.56.78 更改為你的 IP 位址(你可以在 What is My IP? 找到你的 IP Address),然後將它上傳到網站的 /wp-admin/ 路徑下,例如 www.example.com/wp-admin/ 。
這設定令只有你能夠存取 WordPress 控制台,其他人將會被阻擋在外。
如果有多個管理員怎麼辦?
其他的管理員或作者的 IP 可以加在後面,你可以在 allow from 後面加入其他 IP,不同的 IP 間使用半形逗號來區隔,例如:
allow from 22.34.56.78, 98.746.54.32, 99.82.73.64
6. 封鎖某人進入你的網站
如果你知道某個來者不善的 IP 位址,你可以使用以下的程式碼將它拒於網站訪問之外。
<Limit GET POST> order allow,deny deny from 123.456.78.9 deny from 987.654.32.1 allow from all </Limit>
7. 禁止瀏覽目錄
讓未經授權的使用者瀏覽目錄下的檔案或資料夾是相當危險。如要禁止訪問你網站的目錄,只要在你的 .htaccess 加入以下程式碼:
# disable directory browsing Options All -Indexes
8. 允許瀏覽器快取
當啟動瀏覽器快取功能後,將允許使用者從你的網站儲存元件,而無須重新下載。
例如當圖片上傳到網站後,很少會再次更新。瀏覽器快取能讓訪客直接讀取儲存在他們電腦裡的圖片,而不用從你的伺服器下載,節省頻寬、也提升了頁面載入速度(Page Speed)。
## EXPIRES CACHING ## <IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access 1 year" ExpiresByType image/jpeg "access 1 year" ExpiresByType image/gif "access 1 year" ExpiresByType image/png "access 1 year" ExpiresByType text/css "access 1 month" ExpiresByType application/pdf "access 1 month" ExpiresByType text/x-javascript "access 1 month" ExpiresByType application/x-shockwave-flash "access 1 month" ExpiresByType image/x-icon "access 1 year" ExpiresDefault "access 2 days" </IfModule> ## EXPIRES CACHING ##
9. 重新導向一個網址/網站
301 重新導向讓你可以通知搜尋引擎該鏈結已經重新移到新的路徑。它可以被用來重新導向一個網址、資料夾,甚至是整個網站。
例如變更網域名稱、變更固定網址結構時經常用到301 redirect將網站重置。這也是提升網站SEO的其中一個重要技巧。
只要加入以下程式碼便可將網址重新導向某個路徑:
Redirect 301 /originpage.html http://www.example.com/newpage.html Redirect 301 /originfolder/page2.html /folder4/page5.html Redirect 301 / http://www.newexample.com/
10. 禁止直接連結圖片
直接連結的意思是某人直接取用你的圖片鏈結,然後將它分享到其他網頁上。直接連結可能對你的網站帶來負面影響,包括使你的網站變慢,也會讓你的頻寬費用增加。你可以禁止除了你的網站外的網站直接連結圖片,將以下程式碼加入即可。請確認將以下網址更改為你的網址。
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?example.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?examwebsite.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ http://i.imgur.com/abcd.png [NC,R,L]
當其他人試圖從其他網址瀏覽你的圖片時,他們將會看到禁止圖片,而這圖片可以變更為任何你想要的圖(在上面的最後一行設定圖片路徑)。
注意事項!!!
.htaccess 是 WordPress 裡特別嚴格的檔案,只要其中任何一個字符出錯,檔案就會出現錯誤。當錯誤發生時,整個網站的運作會停止,所以必須確保輸入 .htaccess 的程式碼沒有問題為最重要。
在開始前,建議備份一下你當前使用的 .htaccess 檔案。若更新了 .htaccess 檔案令網站不能正常運作,立即回復、還原 .htaccess備份。
參考資料 WordPress Htaccess Tips And Tricks, 原作者 Kevin Muldoon。