知識庫 使用 Profitserver 服務的簡單說明
主要 知識庫 配置 .htaccess 文件

配置 .htaccess 文件


在本文中,我們將探討使用 .htaccess 檔案的基本原理,這對於增強 SEO 至關重要。該文件確保搜尋引擎正確索引頁面。我們將學習如何管理重新導向、配置安全性以及提高效能。此外,我們還將提供有關如何獨立配置此文件的提示。

為什麼需要 .htaccess

.htaccess 檔案對於 Apache 伺服器上的 Web 開發人員來說是一種「遠端控制」。它提供了方便的工具來調整各種參數和管理網站的行為。當無法直接存取伺服器的主設定檔時(例如,虛擬主機通常會出現這種情況),.htaccess 將成為進行必要更改的有用工具。

.htaccess 檔案通常位於網站根目錄或需要特殊配置的資料夾中。例如,如果您使用 WordPress,可以透過 Yoast SEO 外掛程式進行配置,我們在「配置 robots.txt」一文中對此進行了討論。在其他情況下,只需進入所需資料夾並編輯現有的 .htaccess 文件,或者如果該文件尚未創建,則創建它即可。

配置.htaccess 文件

301 重定向 htaccess

.htaccess 檔案中的 301 重定向可以比喻為網站上的永久重定向。它通知搜尋引擎和瀏覽器該頁面現在永久位於新地址,並建議更新書籤和索引。當頁面被移動或刪除時,通常會使用這種重定向來保持其在搜尋結果中的排名並將訪客重新導向到新位置。

要啟動重定向,您需要在.htaccess 檔案中啟用相應的命令:

RewriteEngine on

此後,您可以配置最簡單的重定向形式:

<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /old-page.html /new-page.html
</IfModule>

使用RedirectPermanent指令的類似重定向如下所示:

<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
</IfModule>

這些是最容易配置的重定向方法。接下來,我們來看一個使用mod_rewrite模組的、更進階的重新導向配置:

<IfModule mod_rewrite.c>
RewriteEngine On
    
# Redirecting from one page to another
RewriteRule ^old-page.html$ http://www.example.com/new-page.html [R=301,L]

# Redirecting all traffic from one domain to another
RewriteCond %{HTTP_HOST} ^oldsite.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.oldsite.com$
RewriteRule ^(.*)$ http://www.newsite.com/$1 [R=301,L]
    
# Redirecting from www to non-www (or vice versa)
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

# Redirecting from HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

# Redirecting from one subdomain to another
RewriteCond %{HTTP_HOST} ^subdomain1.example.com$
RewriteRule ^(.*)$ http://subdomain2.example.com/$1 [R=301,L]
</IfModule>

很少會遇到 302 重定向 .htaccess,表示暫時重定位。以下是此類設定的一個範例:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>

指令錯誤文檔

此設定可讓您控制當您的網站發生 HTTP 錯誤時使用者看到的內容。您可以顯示自己的頁面,而不是標準錯誤訊息,這將為訪客提供更多資訊並幫助他們了解發生了什麼。只需按照以下語法即可使用:

ErrorDocument <error_code> <URL_page>

例如,

ErrorDocument 404 /errors/not_found.html

這表示當出現404錯誤時,將開啟/errors/not_found.html頁面。絕對 URL 的指定方式類似:

ErrorDocument 500 http://example.com/errors/server_error.html

此範例指示在發生500錯誤時,在http://example.com/errors/上顯示 server_error.html頁面

拒絕存取網站目錄

.htaccess 檔案包含一條Deny from all命令,用於阻止對 Web 伺服器上特定資料夾或檔案的存取。如果您想對網站訪客隱藏私人資訊或重要文件以確保資料安全,這將非常有用。

要停用清單(查看所有可用目錄),您需要新增以下行:

Options -Indexes

阻止存取特定目錄的範例如下:

<Directory /path_to_your_directory>
Order Deny,Allow
Deny from all
</Directory>

類似地,您可以拒絕對單一文件的存取:

<Files "file.php">
Order Deny,Allow
Deny from all
</Files>

或按副檔名查看一系列檔案:

<FilesMatch "\.(txt|log|bak)$"> # Select the desired extensions, in the example: txt, log, bak
Order Deny,Allow
Deny from all
</FilesMatch>

透過 IP 阻止訪問

.htaccess 檔案中的 IP 封鎖存取是一種允許您限制特定 IP 位址或其群組對您網站的存取的方法。如果您想阻止某些人或不受歡迎的機器人訪問您的網站或其特定部分,這將很有用。

使用以下命令可以阻止單一 IP 位址:

Order Deny,Allow
Allow from all
Deny from 11.22.33.44

封鎖多個 IP 位址的方法類似,只需將「Deny from」行複製為所需的位址即可。

封鎖某個範圍的 IP 位址:

Order Deny,Allow
Allow from all
Deny from 11.11.11.11/24

為了僅允許特定 IP 訪問,請添加代碼:

Order Deny,Allow
Deny from all
Allow from 11.22.33.44

若要完全拒絕訪問,請使用指令Deny from all;若要按掩碼封鎖位址,請指定Deny from 11.22

其中,11.22是 IP 位址遮罩

根據使用者代理封鎖訪客

透過 .htaccess 檔案中的 User-Agent 阻止使用者是一種根據訪客使用的瀏覽器資訊來控制誰可以存取您的 Web 伺服器的方法。 User-Agent 字串包含有關使用者用來與伺服器互動的瀏覽器的數據,借助這些資訊,您可以限制某些使用者的存取。

透過 User-Agent 進行屏蔽最常見的方法是使用mod_rewrite

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Bot1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot2 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot3 [NC]
RewriteRule ^.*$ - [F,L]
</IfModule>

在這個例子中:

  1. RewriteCond %{HTTP_USER_AGENT} 用於檢查 User-Agent 字串。
  2. ^Bot1、^Bot2、^Bot3 是我們想要封鎖的 User-Agent 字串的範例。 NC 修飾符表示比較應該不區分大小寫。
  3. 如果滿足任何 RewriteCond 條件,則 RewriteRule ^.*$ - [F,L] 適用於該請求。它會傳送帶有 403 Forbidden 狀態代碼的回應 (F) 並停止處理規則 (L)。

htaccess 中的快取

透過 .htaccess 檔案配置快取有助於加快網站速度,使用戶能夠更快地載入網站。它的工作原理是:某些文件,例如圖像、CSS 樣式和 JavaScript 腳本,在第一次加載後儲存在用戶的瀏覽器快取中。現在瀏覽器可以從快取中使用這些文件,而不必在使用者每次造訪頁面時都從伺服器重新載入它們。這減少了載入時間並提高了網站效能。

考慮一個例子:

# Enable caching for images for 1 month
<FilesMatch "\.(jpg|jpeg|png|gif|svg)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>

# Enable caching for CSS and JavaScript for 1 week
<FilesMatch "\.(css|js)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>

另一方面,對於頻繁更新的資源,有必要停用快取:

# Excluding caching for HTML pages and XML files
<FilesMatch "\.(html|xml)$">
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "0"
</FilesMatch>

優化網站效能

Apache 中的mod_deflatemod_gzip模組有助於壓縮伺服器傳送到使用者裝置的資訊。這可以減小檔案大小,從而加快頁面載入速度。但是,需要注意的是,這些模組的支援和配置可能因伺服器而異。

mod_deflate模組的使用範例:

<IfModule mod_deflate.c>
# Compressing text file types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>

mod_gzip範例:

<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ # Enabling compression for files with extensions .html, .txt, .css, .js, .php, .pl
mod_gzip_item_include mime ^application/x-javascript.* # Enabling compression for MIME types starting with application/x-javascript
mod_gzip_item_include mime ^text/.* # Enabling compression for MIME types starting with text/
mod_gzip_item_exclude mime ^image/.* # Excluding from compression MIME types starting with image/
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* # Excluding already compressed data (responses with the Content-Encoding: gzip header)
</IfModule>

我們討論了最常用的指令。您可以在官方文件中了解該文件的所有功能。

如何檢查.htaccess 檔案的功能

要檢查您的.htaccess 檔案是否在網站上運行,您可以執行以下步驟:

  1. 故意更改有錯誤的.htaccess 檔案。作為回應,伺服器應該給出錯誤。此方法顯示該檔案的操作是否在伺服器上普遍應用。
  2. 檢查您所做的具體更改的功能。例如,對其中一個參數進行微調,並評估是否有變化。
  3. 檢查頁面的狀態代碼是否與伺服器的回應有關。如何做到這一點,我們之前在文章中描述過 HTTP 錯誤代碼:伺服器錯誤的完整列表.
  4. 請參閱伺服器日誌。它們顯示與 .htaccess 檔案操作相關的所有錯誤。
  5. 使用線上服務或工具進行測試。

重要的是要明白,要檢查 .htaccess 檔案的功能,您不需要一次執行所有步驟。從清單中選擇最合適的方法並使用它就足夠了。

結語

設定.htaccess 檔案是最佳化和保護 Apache 伺服器的重要步驟。我們探討了該文件如何協助管理重新導向、壓縮內容和確保安全。一旦您掌握了使用 .htaccess 的方法,您就獲得了一個強大的工具來提高網站的效能和功能。

❮ 上一篇文章 如何在 Linux 上設定 Web 伺服器 (Apache-PHP-MySQL/MariaDB)
下一篇文章❯ FTP 伺服器設定

向我們諮詢有關 VPS 的問題

無論白天或黑夜,我們隨時準備好解答您的問題。