20個有用的Apache '.htaccess'技巧來保護和自定義網站


Apache是世界上最流行的Web伺服器之一,數百萬個網站使用它向用戶提供內容。Apache最強大的功能之一是它能夠使用.htaccess檔案來自定義和保護網站。.htaccess檔案是一個簡單的文字檔案,可以放置在網站的根目錄中,以控制伺服器行為的各個方面。在本文中,我們將介紹20個有用的Apache .htaccess技巧,可以幫助您保護和自定義您的網站。

密碼保護目錄

如果您想用密碼保護網站上的某個目錄,可以使用以下.htaccess程式碼:

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /path/to/passwords/file
Require valid-user

將/path/to/passwords/file替換為您包含加密密碼的檔案的路徑。您可以使用htpasswd之類的工具生成此檔案。當用戶嘗試訪問受保護的目錄時,系統會提示他們輸入使用者名稱和密碼。

按IP地址阻止訪問者

如果您想阻止來自某些IP地址或範圍的訪問者,可以使用以下.htaccess程式碼:

Order Allow,Deny
Deny from 123.45.67.89

將123.45.67.89替換為您要阻止的IP地址。您還可以使用萬用字元來阻止一系列IP地址:

Order Allow,Deny
Deny from 123.45.67.89

這將阻止所有以123.45.67.89開頭的IP地址。

將訪問者重定向到新URL

如果您想將訪問者從一個URL重定向到另一個URL,可以使用以下.htaccess程式碼:

Redirect 301 /old-url.html http://www.example.com/new-url.html

將/old-url.html替換為您要重定向的URL,將http://www.example.com/new-url.html替換為您要重定向到的URL。這將向訪問者的瀏覽器傳送永久重定向(HTTP 301)。

強制使用HTTPS

如果您想強制訪問者使用HTTPS而不是HTTP,可以使用以下.htaccess程式碼:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

這將把所有HTTP請求重定向到HTTPS。在啟用此功能之前,請確保您的伺服器上已安裝SSL證書。

阻止目錄列表

如果您想阻止Apache在不存在索引檔案時列出目錄的內容,可以使用以下.htaccess程式碼:

Options -Indexes

這將向嘗試訪問目錄的任何訪問者返回403禁止錯誤。

設定自定義錯誤頁面

如果您想為各種HTTP錯誤提供自定義錯誤頁面,可以使用以下.htaccess程式碼:

ErrorDocument 404 /404.html
ErrorDocument 500 /500.html

將/404.html和/500.html替換為您自定義錯誤頁面的URL。您還可以使用它將訪問者重定向到任何HTTP錯誤程式碼的自定義錯誤頁面。

使用Gzip壓縮檔案

如果您想使用Gzip壓縮網站檔案以減小其大小並加快頁面載入時間,可以使用以下.htaccess程式碼:

<IfModule mod_deflate.c>
   AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
</IfModule>

這將使用Gzip壓縮網站上的所有基於文字的檔案(HTML、CSS、JavaScript等)。

阻止訪問特定檔案型別

如果您想阻止訪問者訪問網站上的某些檔案型別(例如.sql或.conf檔案),可以使用以下.htaccess程式碼:

<FilesMatch "\.(sql|conf)$">
   Order allow,deny
   Deny from all
</FilesMatch>

將(sql|conf)替換為您要阻止的副檔名的管道分隔列表。這將向嘗試訪問具有這些副檔名的檔案的任何訪問者返回403禁止錯誤。

限制檔案上傳大小

如果您想限制訪問者可以上傳到您網站的最大檔案大小,可以使用以下.htaccess程式碼:

php_value upload_max_filesize 10M
php_value post_max_size 10M

將10M替換為您要允許的最大檔案大小。這將把檔案上傳和POST請求限制到該大小。

阻止訪問特定使用者代理

如果您想阻止某些使用者代理(例如網路爬蟲或惡意機器人)訪問您的網站,可以使用以下.htaccess程式碼:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} bad-bot [NC]
RewriteRule .* - [F]

將bad-bot替換為您要阻止的使用者代理。這將向使用該使用者代理的任何訪問者返回403禁止錯誤。

將非www重定向到www

如果您想將訪問您網站時沒有“www”字首的訪問者重定向到帶有字首的版本,可以使用以下.htaccess程式碼:

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

將example.com替換為您自己的域名。這將向訪問者的瀏覽器傳送永久重定向。

停用伺服器簽名

如果您想隱藏HTTP標頭中關於伺服器的版本號和其他資訊,可以使用以下.htaccess程式碼:

ServerSignature Off

這將阻止Apache在HTTP標頭中顯示伺服器簽名信息。

限制對特定HTTP方法的訪問

如果您想將對您網站的訪問限制為僅某些HTTP方法(例如GET和POST),可以使用以下.htaccess程式碼:

<LimitExcept GET POST>
   Order Deny,Allow
   Deny from all
</LimitExcept>

這將阻止除GET和POST之外的所有HTTP方法的訪問。

阻止訪問特定推薦來源

如果您想阻止來自某些推薦來源(例如垃圾郵件網站或惡意域名)對您網站的訪問,可以使用以下.htaccess程式碼:

RewriteEngine on
RewriteCond %{HTTP_REFERER} spammydomain\.com [NC]
RewriteRule .* - [F]

將spammydomain.com替換為您要阻止的域名。這將向來自該域名的任何訪問者返回403禁止錯誤。

為特定副檔名設定MIME型別

如果您想為網站上的某些副檔名設定特定的MIME型別,可以使用以下.htaccess程式碼:

AddType text/html .html
AddType application/json .json

將.html和.json替換為您要設定MIME型別的副檔名。這將確保為這些檔案型別在HTTP標頭中傳送正確的MIME型別。

停用盜鏈

如果您想阻止其他網站直接連結到您網站上的影像或其他媒體(也稱為“盜鏈”),可以使用以下.htaccess程式碼:

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

將example.com替換為您自己的域名,並將(gif|jpg|jpeg|bmp|png)替換為您要保護的副檔名的管道分隔列表。這將向嘗試盜鏈您網站上影像或其他媒體的任何訪問者返回403禁止錯誤。

自定義錯誤頁面

如果您想自定義Apache顯示的預設錯誤頁面(例如404未找到或500內部伺服器錯誤),可以使用以下.htaccess程式碼:

ErrorDocument 404 /404.html
ErrorDocument 500 /500.html

將404.html和500.html替換為您自己的錯誤頁面的名稱。這將顯示您的自定義錯誤頁面而不是預設的Apache錯誤頁面。

重定向到HTTPS

如果您想將訪問者重定向到網站的安全HTTPS版本,可以使用以下.htaccess程式碼:

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

這將把所有HTTP請求重定向到HTTPS。

防止目錄列表

如果您想阻止訪問者檢視網站上目錄中的檔案列表,可以使用以下.htaccess程式碼:

Options -Indexes

這將向嘗試檢視目錄列表的任何訪問者返回403禁止錯誤。

新增自定義標頭

如果您想向網站上的所有請求新增自定義HTTP標頭,可以使用以下.htaccess程式碼:

Header set X-Frame-Options "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options "nosniff"

將X-Frame-Options、X-XSS-Protection和X-Content-Type-Options替換為您要設定的標頭的名稱及其相應的值。這將向網站上的所有HTTP響應新增這些標頭。

結論

總之,.htaccess檔案是一個強大的工具,可以用來以多種方式保護和自定義您的網站。透過本文討論的20個技巧,您可以阻止惡意流量、最佳化網站以供搜尋引擎使用,並增強使用者體驗。但是,在更改.htaccess檔案時務必謹慎,因為一個錯誤可能會導致錯誤,甚至可能導致您的網站停止執行。在進行任何更改之前,始終備份您的.htaccess檔案,並在實施任何新程式碼後徹底測試您的網站。

更新於: 2023年3月28日

1K+ 閱讀量

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.