.htaccess 設定規則及重新導向

.htaccess 檔案是一個目錄層級的設定檔,由 Apache 網頁伺服器支援。你可以用它為特定帳戶修改網頁伺服器設定(例如啟用或停用功能),而不會影響全域伺服器設定。

此檔案會將其設定套用至所在的整個目錄,包括該目錄內的所有檔案及子目錄。任何在 .htaccess 檔案中的更改都會即時生效,無需重新啟動伺服器。

如何尋找 .htaccess 檔案

要尋找 .htaccess 檔案:  

1. 前往你的 Spaceship 帳戶 >> 選擇 Hosting Manager 於 Launchpad >> 管理 於主機方案旁 >> 檔案與儲存空間 >> 管理檔案 於網站名稱旁。

2. 你將會被導向至網域根目錄。

3.  若要編輯該網域的 .htaccess 檔案,請在網域根目錄找到 .htaccess 檔案,右鍵點擊並選擇 編輯 選項:


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


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


5. 你可以開始新增自己的設定規則並儲存。
   

常用 .htaccess 規則清單

封鎖 

此方法可根據用戶的 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>

注意: 請勿將已棄用的 AllowDenyOrder 指令與新 Require 指令一起使用

Mod_Rewrite(轉址規則)

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 換成你的自訂錯誤檔案路徑。

停用現有 .htaccess 規則

如果你需要暫時停用部分現有規則(例如測試用途),可以輕鬆將其註解。只需在該行開頭加上井號(#)即可。

另外,你也可以選取單行或多行,然後使用 Ctrl + / 快捷鍵來停用。

必須提供有效的電郵地址