.htaccess 是一個(gè)設(shè)定檔,讓你可以控制該路徑下的檔案及資料夾,以及所有子目錄。這個(gè)檔案名稱(chēng)是由 hypertext access 而來(lái),能為大多數(shù)的服務(wù)器環(huán)境使用。
對(duì)于許多 WordPress 使用者來(lái)說(shuō),他們第一次看到 .htaccess 檔案應(yīng)該是在自定他們網(wǎng)站的固定網(wǎng)址時(shí)。為了使用更美觀的鏈結(jié),而不是預(yù)設(shè)的鏈結(jié)格式(例如:http://free.com.tw/sample-post/
而不是 http://free.com.tw/?p=123 ),我們必須將以下程式碼加入 .htaccess 檔案:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
如果 .htaccess 不存在,你可以自己建立一個(gè)然后將它上傳。你需要做的只有建立一個(gè)空白的文字檔,將它儲(chǔ)存為 .htaccess 然后上傳到網(wǎng)站的根目錄。請(qǐng)確認(rèn)在檔案的開(kāi)頭有一個(gè)點(diǎn),是不可漏掉的。
你也必須確認(rèn)你的 .htaccess 檔案是服務(wù)器可寫(xiě)入的,WordPress 才能將適當(dāng)?shù)某淌酱a加入你的 .htaccess 。WordPress.org 建議把檔案權(quán)限設(shè)定為 644 。
.htaccess 檔案不僅用于固定網(wǎng)址,該檔案也能強(qiáng)化網(wǎng)站安全。數(shù)以百萬(wàn)的 WordPress 用戶利用它來(lái)保護(hù)網(wǎng)站免于垃圾郵件發(fā)送者、黑客和其他已知的威脅。
在本文裡,我會(huì)分享一些用于 .htaccess 的程式碼片段,可以強(qiáng)化你的網(wǎng)站安全。相信你會(huì)找到一些對(duì)你有幫助的程式碼。
你可能也注意到上面固定網(wǎng)址的 .htaccess 程式碼是包覆于 #BEGIN WordPress 及 #END WordPress 裡。WordPress 可以更新這個(gè)標(biāo)簽裡的程式碼,你必須把要新增的程式碼片段放置于你的 .htaccess
檔案的頂部或底部(在 #BEGIN WordPress 之前或 #END WordPress 之后)。
請(qǐng)注意…
.htaccess 是 WordPress 裡個(gè)性倔強(qiáng)的檔案,只要其中任何一個(gè)字符出錯(cuò),檔案就會(huì)出現(xiàn)錯(cuò)誤。當(dāng)錯(cuò)誤發(fā)生時(shí),它通常會(huì)影響到整個(gè)網(wǎng)站的運(yùn)作,最重要的是你必須確保輸入 .htaccess 的程式碼沒(méi)有
問(wèn)題。
在開(kāi)始前,備份一下你當(dāng)前使用的 .htaccess 檔案吧!將它保存到你電腦裡安全的位置。如果可以,也能在云端硬碟備份一份。
無(wú)論何時(shí)更新了你服務(wù)器上的 .htaccess 檔案,記得回到網(wǎng)站重新整理一下,看看網(wǎng)站是不是還能正常運(yùn)作。不要跳過(guò)這個(gè)步驟,因?yàn)榇_認(rèn)網(wǎng)站運(yùn)作正常是至關(guān)重要的一個(gè)步驟。如果你的網(wǎng)站給你一個(gè)
白畫(huà)面,立即回復(fù)、還原 .htaccess 修改前的上個(gè)步驟。
如果你無(wú)法還原你的備份,那麼將服務(wù)器上的 .htaccess 刪除,然后建立一個(gè)空白的 .htaccess 檔案并將它上傳。這將協(xié)助你使你的網(wǎng)站回復(fù)連線;當(dāng)你的網(wǎng)站出現(xiàn)問(wèn)題,這顯然是最重要的一步。
1. 保護(hù) .htaccess
既然 .htaccess 擁有你整個(gè)網(wǎng)站的控制權(quán),保護(hù)它遠(yuǎn)離不相關(guān)人士就顯得很重要。以下的程式碼將讓黑客無(wú)法存取你的 .htaccess 檔,只需要透過(guò) FTP 來(lái)修改 .htaccess 檔案(或是控制臺(tái)的檔案管理)。
order allow,deny
deny from all
satisfy all
2. 保護(hù) WP-Config.php
另一個(gè)重要的檔案是 wp-config.php。這個(gè)檔案裡包含資料庫(kù)的登入資訊,以及其他的系統(tǒng)設(shè)定。因此,明確的作法是禁止任何人訪問(wèn)它。
order allow,deny
deny from all
3. 保護(hù) /Wp-Content/
wp-content 資料夾也是 WordPress 相當(dāng)重要的一部分,在這個(gè)資料夾裡包含了你的佈景主題、外掛、上傳的媒體檔案(圖片、影片)及快取檔案。
有鑒于此,這通常也是黑客下手的目標(biāo)。當(dāng)垃圾郵件發(fā)送者試圖破壞你的老網(wǎng)站,他必須將郵件程式傳到你的上傳資料夾。然后使用你的服務(wù)器來(lái)寄送垃圾郵件;這麼做會(huì)使你的服務(wù)器被列入垃圾郵件名單。
你可以透過(guò)創(chuàng)建一個(gè)獨(dú)立的 .htaccess 檔案來(lái)解決類(lèi)似問(wèn)題:
Order deny,allow
Deny from all
Allow from all
你必須將 .htaccess 檔案獨(dú)立上傳到 wp-content 主目錄,例如 www.yourwebsite.com/wp-content/。這麼做只會(huì)允許 XML、CSS、JPG、JPEG、PNG、GIF 和 JavaScript 被上傳到媒體資料夾,其餘的檔案類(lèi)型將被拒絕。
4. 保護(hù) Include-Only 檔案
某些檔案是絕不用讓使用者存取的。你可以加入以下程式碼,來(lái)阻擋使用者存取這些檔案:
# Block the include-only files.
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]
5. 限制存取 WordPress 控制臺(tái)
另一個(gè)黑客覬覦的目標(biāo)是 WordPress 控制臺(tái)。如果他們獲取了存取該區(qū)域的權(quán)限,他們就可以在你的網(wǎng)站上為所欲為。
確保 WordPress 控制臺(tái)更加安全,建立一個(gè) .htaccess 檔案并加入以下程式碼:
# Limit logins and admin by IP
order deny,allow
deny from all
allow from 12.34.56.78
請(qǐng)務(wù)必將 12.34.56.78 更改為你的 IP 位址(你可以在 What is My IP? 找到你的 IP Address),然后將它上傳到網(wǎng)站的 /wp-admin/ 路徑下,例如 www.yourwebsite.com/wp-admin/ 。
只有你能夠存取 WordPress 控制臺(tái),其他人將會(huì)被阻擋在外。
其他的管理員或作者的 IP 可以加在后面,你可以在 allow from 后面加入其他 IP,不同的 IP 間使用半形逗號(hào)來(lái)區(qū)隔,例如:
allow from 12.34.56.78, 98.76.54.32, 19.82.73.64
6. 禁止某人進(jìn)入你的網(wǎng)站
如果你知道某個(gè)來(lái)者不善的 IP 位址,你可以使用以下的程式碼將它拒于網(wǎng)站之外。舉例來(lái)說(shuō),你可以封鎖某些留下垃圾留言或是嘗試存取你 WordPress 控制臺(tái)的使用者。
order allow,deny
deny from 123.456.78.9
deny from 987.654.32.1
allow from all
7. 將使用者傳送到維護(hù)頁(yè)面
一些維護(hù)外掛像是 Ultimate Maintenance Mode 和 Mainteance 相當(dāng)實(shí)用,當(dāng)你在維護(hù)網(wǎng)站時(shí),可以顯示一個(gè)暫時(shí)的頁(yè)面給使用者,或是在你更新網(wǎng)站時(shí)。
不幸的是,維護(hù)外掛只有在你的網(wǎng)站運(yùn)作正常時(shí)才起得了作用。
如果你想未雨稠繆,我建議你建立一個(gè)基本的 .html 頁(yè)面,將它命名為 maintenance.html 來(lái)提醒使用者目前網(wǎng)站遭遇一些問(wèn)題,但會(huì)在短時(shí)間內(nèi)恢復(fù)連線。當(dāng)你的網(wǎng)站掛掉時(shí),只要將以下程式碼加入
你的 .htaccess 檔案,就能將所有流量引導(dǎo)至維護(hù)畫(huà)面。
RewriteEngine on
RewriteCond REQUEST_URI} !/maintenance.html$
RewriteCond REMOTE_ADDR} !^123.123.123.123
RewriteRule $ /maintenance.html [R=302,L]
你必須要為你的網(wǎng)站來(lái)自定上方程式碼。變更上方的檔案名稱(chēng),來(lái)符合你的維護(hù)頁(yè)面路徑,你也必須加入你的 IP 位址,以便在維護(hù)狀態(tài)時(shí)不會(huì)被引導(dǎo)至維護(hù)頁(yè)面(讓你可以繼續(xù)調(diào)整網(wǎng)站),以上代碼
使用 302 轉(zhuǎn)址確保維護(hù)頁(yè)面不會(huì)被搜尋引擎索引。
8. 禁止瀏覽目錄
讓未經(jīng)授權(quán)的使用者瀏覽目錄下的檔案或資料夾是相當(dāng)危險(xiǎn)的一件事情。如要禁止訪問(wèn)你網(wǎng)站的目錄,只要在你的 .htaccess 加入以下程式碼即可:
# disable directory browsing
Options All -Indexes
9. 允許瀏覽器快取
當(dāng)啟動(dòng)瀏覽器快取功能后,將允許使用者從你的網(wǎng)站儲(chǔ)存元件,而無(wú)須重新下載。
它用于設(shè)計(jì)元素,例如 CSS 樣式表和其它媒體內(nèi)容,例如圖片。這是一個(gè)實(shí)用的技巧,因?yàn)楫?dāng)圖片上傳到網(wǎng)站后,很少會(huì)再次更新。瀏覽器快取能讓訪客直接讀取儲(chǔ)存在他們電腦裡的圖片,而不用從你
的服務(wù)器下載,節(jié)省頻寬、也提升了頁(yè)面載入速度。
啟用瀏覽器快取,你需要做的就是把以下程式碼加入 .htaccess 檔案:
## EXPIRES CACHING ##
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"
## EXPIRES CACHING ##
10. 重新導(dǎo)向一個(gè)網(wǎng)址
301 重新導(dǎo)向讓你可以通知搜尋引擎該鏈結(jié)已經(jīng)重新移到新的路徑。它可以被用來(lái)重新導(dǎo)向一個(gè)網(wǎng)址、資料夾,甚至是一整個(gè)網(wǎng)站。
因此,它常被用于網(wǎng)址發(fā)生變化時(shí),例如變更網(wǎng)域名稱(chēng)、變更固定網(wǎng)址結(jié)構(gòu),或是變更頁(yè)面名稱(chēng)(例如將頁(yè)面名稱(chēng)從 my-news 變成 mygreatnews)。
要重新導(dǎo)向某個(gè)路徑,你需要做的就是加入以下程式碼:
Redirect 301 /oldpage.html http://www.yourwebsite.com/newpage.html
Redirect 301 /oldfolder/page2.html /folder3/page7.html
Redirect 301 / http://www.mynewwebsite.com/
11. 禁止直接連結(jié)圖片
直接連結(jié)的意思是某人直接取用你的圖片鏈結(jié),然后將它分享到其他網(wǎng)頁(yè)上。這常發(fā)生在討論區(qū),但大多數(shù)的網(wǎng)站擁有者仍然會(huì)這麼做。直接連結(jié)可能對(duì)你的網(wǎng)站帶來(lái)負(fù)面影響,包括使你的網(wǎng)站變慢,
也會(huì)讓你的頻寬費(fèi)用增加。
你可以禁止除了你的網(wǎng)站外的網(wǎng)站直接連結(jié)圖片,將以下程式碼加入即可。請(qǐng)確認(rèn)將以下網(wǎng)址更改為你的網(wǎng)址。
RewriteEngine on
RewriteCond HTTP_REFERER} !^$
RewriteCond HTTP_REFERER} !^http(s)?://(www.)?yourwebsite.com [NC]
RewriteCond HTTP_REFERER} !^http(s)?://(www.)?yourotherwebsite.com [NC]
RewriteRule .(jpg|jpeg|png|gif)$ http://upload.chinaz.com/2014/0718/1405671492557.png [NC,R,L]
當(dāng)其他人試圖從其他網(wǎng)址瀏覽你的圖片時(shí),他們將會(huì)看到禁止圖片,而這圖片可以變更為任何你想要的圖(在上面的最后一行設(shè)定圖片路徑)。
禁止直接連結(jié)可能導(dǎo)致一些 RSS 閱讀器無(wú)法顯示你 RSS Feed 裡的圖片。
希望以上的 .htaccess 檔案技巧對(duì)你有所助益。如你所見(jiàn),它是一個(gè)可以完成許多工作的設(shè)定檔。
更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄