.htaccess 檔案是一個目錄層級的設定檔,由 Apache 網頁伺服器支援。你可以用它為特定帳戶修改網頁伺服器設定(例如啟用或停用功能),而不會影響全域伺服器設定。
此檔案會將其設定套用至所在的整個目錄,包括該目錄內的所有檔案及子目錄。任何在 .htaccess 檔案中的更改都會即時生效,無需重新啟動伺服器。
要尋找 .htaccess 檔案:
1. 前往你的 Spaceship 帳戶 >> 選擇 Hosting Manager 於 Launchpad >> 管理 於主機方案旁 >> 檔案與儲存空間 >> 管理檔案 於網站名稱旁。
2. 你將會被導向至網域根目錄。
3. 若要編輯該網域的 .htaccess 檔案,請在網域根目錄找到 .htaccess 檔案,右鍵點擊並選擇 編輯 選項:

注意: 請確保已啟用「顯示隱藏檔案(點檔案)」於 設定 選單:

4. 若檔案管理員中沒有 .htaccess 檔案,你可以用 + 新增檔案 按鈕建立新檔案:

5. 你可以開始新增自己的設定規則並儲存。
此方法可根據用戶的 IP 位址或網域進行封鎖。這對於限制不受歡迎訪客的存取,或僅允許網站擁有者進入特定區域(如管理區)特別有用。
要實作特定封鎖規則,請建立一個 .htaccess 檔案並加入以下內容:
(允許其他所有人存取,並封鎖 IP 位址為 X.X.X.X 的用戶)
<RequireAll>
Require all granted
Require not ip X.X.X.X
</RequireAll>
(僅允許特定 X.X.X.X 和 Y.Y.Y.Y IP,其餘訪客全部封鎖)
<RequireAll>
Require all denied
Require ip X.X.X.X
Require ip Y.Y.Y.Y
</RequireAll>
注意: 請勿將已棄用的 Allow、Deny 和 Order 指令與新 Require 指令一起使用。
Mod_Rewrite 定義網頁和網址如何呈現給訪客。
預設情況下,Mod_Rewrite 會將網址對應到相應的檔案系統路徑。不過,它也可以將一個網址重新導向到另一個網址。
在設定轉址前,請選擇最適合你需求的轉址類型:
永久轉址(301):此轉址會傳送 301 狀態碼,表示該頁面已永久移動。瀏覽器會快取此轉址,並通知搜尋引擎及用戶代理程式更新資料庫中的網址。這是最常見的轉址類型。
暫時轉址(302):此轉址會傳送 302 狀態碼,表示該移動為暫時性。瀏覽器不會快取此轉址,雖然會將訪客及搜尋引擎導向新頁面,但原頁面仍會被索引。除非你確定網址未來不會再變動,否則建議使用此類型轉址。
以下是一些最常見且實用的轉址,可透過 .htaccess 檔案設定:
永久轉址從 example1.com 到 example2.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example1\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example1\.com$
RewriteRule ^(.*)$ "http\:\/\/example2\.com/$1" [R=301,L]
暫時轉址從 exampledomain1.com 到 exampledomain2.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example1\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example1\.com$
RewriteRule ^(.*)$ "http\:\/\/example2\.com\/" [R=302,L]
注意:以下為永久轉址範例。如需暫時轉址,只需將程式碼結尾的 [R=301,L] 改為 [R=302,L](如有需要)。
從 example1.com/subfolder 轉址到 example2.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example1\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example1\.com$
RewriteRule ^subfolder/$ "http\:\/\/example2\.com\/" [R=301,L]
從 HTTP 轉址到 HTTPS(以 example.com 為例)
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://example.com%{REQUEST_URI} [R,L]
或
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
從非 WWW 轉址到 WWW
對任何網域,.htaccess 皆會生效:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
對指定網域:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
從 WWW 轉址到非 WWW
對任何網域 .htaccess 皆會生效:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
對指定網域:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule (.*) http://example.com/$1 [R=301,L]
將所有 example.com 頁面轉址到對應的 domain.com 頁面
RedirectMatch 301 ^/(.*)$ http://domain.com/$1
注意:兩個網域的所有頁面名稱必須一致,否則轉址會出現「找不到頁面」訊息。
將單一頁面轉址到新網址
Redirect 301 /old_page.html http://www.domain.com/new_page.html
注意:此技巧可用於將已刪除頁面導向 404 錯誤,或在更新內容參照後進行 SEO 調整。
這類規則會為目錄或子目錄設定安全限制。你可以為目錄設置密碼保護,讓訪客必須輸入用戶名稱及密碼才能存取。
設置此保護方法:
1. 在 /home/cpanel_user/.htpasswds/ 資料夾內建立你想保護的目錄(例如 domain.com/test,路徑為 .htpasswds/domain.com/test/)。
2. 在此目錄內建立 passwd 檔案,並使用 線上產生器新增雜湊存取憑證。
3. 在 .htaccess 檔案中加入以下指令:
AuthType Basic
AuthName "Directory Name"
AuthUserFile "/home/cpanel_user/.htpasswds/public_html/test/passwd"
require valid-user
此功能可讓你為網站建立個人化錯誤頁面。這很實用,因為當網址失效時,你可以顯示符合網站主題的錯誤訊息,避免出現預設的 '404 File Not Found' 錯誤,並以自訂設計的錯誤頁面及指引協助用戶返回網站內容,減少混淆。
要設置自訂錯誤頁面,請將以下內容加入 .htaccess 檔案:
ErrorDocument 404 /404.html
這行指令會通知 Apache 網頁伺服器在發生 404(找不到檔案)錯誤時,載入位於網域根目錄的 404.html 檔案。
注意: 若要為其他錯誤(如 403 或 500)建立自訂錯誤頁,只需將 404 換成對應的錯誤代碼,並將 /404.html 換成你的自訂錯誤檔案路徑。
如果你需要暫時停用部分現有規則(例如測試用途),可以輕鬆將其註解。只需在該行開頭加上井號(#)即可。
另外,你也可以選取單行或多行,然後使用 Ctrl + / 快捷鍵來停用。