在本文中,我們將探討使用 .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>
類似的重定向使用 永久重定向 指令如下圖所示:
<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 發生錯誤,頁面位於 /錯誤/未找到.html 將會開放。絕對 URL 的指定方式類似:
ErrorDocument 500 http://example.com/errors/server_error.html
此範例表示顯示 伺服器錯誤.html 頁面在 http://example.com/errors/ 如果發生 500 錯誤。
拒絕存取網站目錄
.htaccess 檔案包含以下命令 拒絕所有,這有助於拒絕存取您的 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 位址的方法類似,只需複製“拒絕從”行,其中包含所需的地址。
封鎖某個範圍的 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
要完全拒絕訪問,請使用指令 拒絕所有,對於按遮罩阻止位址,請指定 從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>
在這個例子中:
- RewriteCond %{HTTP_USER_AGENT} 用於檢查 User-Agent 字串。
- ^Bot1、^Bot2、^Bot3 是我們想要封鎖的 User-Agent 字串的範例。 NC 修飾符表示比較應該不區分大小寫。
- 如果滿足任何 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>
優化網站效能
mod_deflate mod_gzip Apache 中的模組有助於壓縮伺服器傳送到使用者裝置的資訊。這使得檔案尺寸更小,從而加快頁面載入速度。然而,重要的是要記住,這些模組的支援和配置可能會因您的伺服器而異。
使用範例 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 檔案是否在網站上運行,您可以執行以下步驟:
- 故意更改有錯誤的.htaccess 檔案。作為回應,伺服器應該給出錯誤。此方法顯示該檔案的操作是否在伺服器上普遍應用。
- 檢查您所做的具體更改的功能。例如,對其中一個參數進行微調,並評估是否有變化。
- 檢查頁面的狀態代碼是否與伺服器的回應有關。如何做到這一點,我們之前在文章中描述過 HTTP 錯誤代碼:伺服器錯誤的完整列表.
- 請參閱伺服器日誌。它們顯示與 .htaccess 檔案操作相關的所有錯誤。
- 使用線上服務或工具進行測試。
重要的是要明白,要檢查 .htaccess 檔案的功能,您不需要一次執行所有步驟。從清單中選擇最合適的方法並使用它就足夠了。
結論
設定.htaccess 檔案是最佳化和保護 Apache 伺服器的重要步驟。我們探討了該文件如何協助管理重新導向、壓縮內容和確保安全。一旦您掌握了使用 .htaccess 的方法,您就獲得了一個強大的工具來提高網站的效能和功能。