家興網(wǎng)絡(luò)分享常見(jiàn)的將不帶 www(裸域)訪問(wèn)自動(dòng)跳轉(zhuǎn)到帶 www 域名的實(shí)現(xiàn)方式,包括操作步驟和注意事項(xiàng)。主要思路是通過(guò) 301 永久重定向,讓用戶或搜索引擎始終使用帶 www 的規(guī)范域名訪問(wèn),從而避免權(quán)重分散和 https/SEO 問(wèn)題。下面先做一個(gè)整體概述,再分別從 Apache(.htaccess)、Nginx、IIS、DNS 以及 PHP 五個(gè)角度進(jìn)行詳細(xì)講解。
概述
為了保證網(wǎng)站的規(guī)范訪問(wèn)和 SEO 優(yōu)化,通常需要將用戶訪問(wèn) (不帶 www)時(shí),統(tǒng)一跳轉(zhuǎn)到 htjh.netwww.(帶 www)。常見(jiàn)做法是使用 301 永久重定向,這樣搜索引擎會(huì)把原 URL 的大部分權(quán)重轉(zhuǎn)移到新 URL,有助于收錄和排名優(yōu)化。可以通過(guò)服務(wù)器配置(如 Apache 的 .htaccess 、Nginx 的 server 塊、IIS 的 URL 重寫等)或 DNS 服務(wù)商的 URL 轉(zhuǎn)發(fā)來(lái)實(shí)現(xiàn),也可以在代碼層面(如 PHP)做簡(jiǎn)單跳轉(zhuǎn)。下面依次介紹各種實(shí)現(xiàn)方案及其優(yōu)缺點(diǎn)。htjh.net
為什么要做 www 與裸域的重定向
SEO 和權(quán)重集中
將不帶 www 和帶 www 的訪問(wèn)統(tǒng)一到一個(gè)域名,可以避免搜索引擎把兩者當(dāng)作兩個(gè)不同的網(wǎng)站,導(dǎo)致權(quán)重分散和重復(fù)內(nèi)容問(wèn)題。使用 301 永久重定向可以讓搜索引擎將原來(lái)裸域的鏈接權(quán)重合并到帶 www 的主域名上,有助于排名優(yōu)化。
HTTPS 和證書(shū)管理
如果網(wǎng)站啟用了 HTTPS 證書(shū),通常會(huì)對(duì) www.gongst.com.cn 和 htjh.net 分別進(jìn)行證書(shū)配置。為了簡(jiǎn)化證書(shū)管理,也常將裸域跳轉(zhuǎn)到帶 www 后,僅在帶 www 域名上配置證書(shū),以保證訪問(wèn)時(shí)始終使用同一個(gè)證書(shū),避免中間人警告。
用戶訪問(wèn)習(xí)慣
部分用戶習(xí)慣輸入 ,部分用戶習(xí)慣輸入 htjh.netwww.gongst.com.cn。統(tǒng)一到帶 www 的規(guī)范域名,可以給用戶一致的體驗(yàn),并避免因未配置重定向而出現(xiàn)訪問(wèn)不到網(wǎng)站的情況。
方法一:Apache (.htaccess 文件)
1. 前提條件
服務(wù)器使用 Apache,且已開(kāi)啟 mod_rewrite 模塊。
網(wǎng)站根目錄可以讀寫并放置 .htaccess 文件。
2. 配置步驟
在站點(diǎn)根目錄下新建(或編輯已有的) .htaccess 文件。
將以下代碼加入文件開(kāi)頭(將
替換為你的裸域,htjh.netwww.htjh.net替換為帶 www 的主域名):RewriteEngine On # 打開(kāi)重寫引擎 RewriteCond %{HTTP_HOST} ^htjh.net$ [NC] # 如果 Host 完全等于裸域 RewriteRule ^(.*)$ http://www.gongst.com.cn/$1 [R=301,L] # 301 重定向到帶 www 的 URLRewriteEngine On:開(kāi)啟引擎后才能使用后續(xù)規(guī)則。RewriteCond %{HTTP_HOST} ^:匹配.met$ [NC]htjh,其中htjh.netNC表示大小寫不敏感。RewriteRule ^(.*)$ http://www.:將訪問(wèn)的路徑部分(如/$1 [R=301,L]htjh.net/foo)追加到重定向后的 URL,R=301表示永久重定向,L表示最后一條規(guī)則。保存后無(wú)需重啟 Apache,一般在幾秒內(nèi)即可生效。訪問(wèn)
http://時(shí)會(huì)自動(dòng)跳轉(zhuǎn)到/abchtjh.nethttp://www.。/abchtjh.net
3. 支持 HTTPS
如果網(wǎng)站已經(jīng)啟用 HTTPS,且期望將裸域 HTTP/HTTPS 都跳轉(zhuǎn)到 https://www.,可以在 .htaccess 中做如下改寫:htjh.net
RewriteEngine On
# 針對(duì) HTTP 裸域:
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^htjh.net$ [NC]
RewriteRule ^(.*)$ http://www.gongst.com.cn/$1 [R=301,L]
# 針對(duì) HTTPS 裸域:
RewriteCond %{HTTPS} =on
RewriteCond %{HTTP_HOST} ^htjh.net$ [NC]
RewriteRule ^(.*)$ http://www.gongst.com.cn/$1 [R=301,L]這樣無(wú)論用戶訪問(wèn) http:// 還是 htjh.nethttps:// 都會(huì)跳到 htjh.nethttps://www.。htjh.net
4. 優(yōu)缺點(diǎn)
優(yōu)點(diǎn):簡(jiǎn)單易用,適合大部分虛擬主機(jī)或自有服務(wù)器,配置后穩(wěn)定無(wú)額外費(fèi)用。
缺點(diǎn):需要服務(wù)器支持 mod_rewrite 模塊,且在高并發(fā)場(chǎng)景下,使用 .htaccess 會(huì)額外增加文件解析開(kāi)銷。
方法二:Nginx (server 塊配置)
1. 前提條件
服務(wù)器使用 Nginx,并且具備修改站點(diǎn)配置文件(通常位于
/etc/nginx/conf.d/或/etc/nginx/sites-enabled/下)的權(quán)限。擁有 root 或 sudo 權(quán)限,可以重啟或重新加載 Nginx。
2. 配置步驟
打開(kāi) Nginx 的站點(diǎn)配置文件(如
example.conf或default.conf),在server段之外新增一個(gè)用于監(jiān)聽(tīng)裸域的 server 段。例如:server { listen 80; # 監(jiān)聽(tīng) 80 端口 HTTP 請(qǐng)求 server_name htjh.net; # 僅匹配裸域 return 301 http://www.gongst.com.cn$request_uri; # 永久重定向到帶 www }listen 80;:監(jiān)聽(tīng) HTTP 默認(rèn)端口。server_name:當(dāng)請(qǐng)求的 Host 為裸域時(shí)生效。;htjh.netreturn 301 http://www.:將請(qǐng)求 URI 原樣追加到重定向目標(biāo),$request_uri;htjh.net301表示永久重定向。如果啟用了 HTTPS,需要另外監(jiān)聽(tīng) 443 并做類似的跳轉(zhuǎn)。例如:
server { listen 443 ssl; server_name htjh.net; ssl_certificate /path/to/cert.pem; # 替換為證書(shū)路徑 ssl_certificate_key /path/to/key.pem; # 替換為私鑰路徑 return 301 http://www.gongst.com.cn$request_uri; }listen 443 ssl;:監(jiān)聽(tīng) HTTPS。需填寫正確的證書(shū)及私鑰路徑,才能支持 HTTPS。
最后重載或重啟 Nginx,使配置生效:
sudo nginx -t # 測(cè)試配置是否正確 sudo nginx -s reload # 或者:sudo systemctl reload nginx
3. 優(yōu)缺點(diǎn)
優(yōu)點(diǎn):性能優(yōu)秀,單進(jìn)程下處理高并發(fā)更穩(wěn)定,且配置文件一經(jīng)加載即可生效。
缺點(diǎn):需要有服務(wù)器訪問(wèn)權(quán)限和 Nginx 基礎(chǔ)知識(shí),不適用于僅有虛擬主機(jī)權(quán)限的用戶。
方法三:IIS (Windows 服務(wù)器)
1. 前提條件
服務(wù)器運(yùn)行 Windows,使用 IIS(Internet Information Services)作 Web 服務(wù)器。
已安裝并啟用了 URL 重寫擴(kuò)展(URL Rewrite Module)。
2. 配置步驟
將裸域 (
)與帶 www (htjh.netwww.)都綁定到同一個(gè)網(wǎng)站,并指向同一物理路徑。htjh.net打開(kāi) IIS 管理器,選擇你的網(wǎng)站,雙擊右側(cè)的 “URL 重寫” 功能。
在右側(cè)操作欄中點(diǎn)擊 “添加規(guī)則…”,選擇 “空白規(guī)則(Inbound rules)”,然后按如下配置填寫:
操作類型:重定向(Redirect)
重定向 URL:
http://www./{R:1}htjh.net重定向類型:永久(301)
條件輸入:
{HTTP_HOST}模式:
^.net$htjh忽略大小寫:勾選
{HTTP_HOST}模式:^(或其他端口).net:80$htjh使用模式:
(.*)名稱:RedirectToWWW(自定義)
匹配 URL:
條件(Conditions):
操作(Action):
點(diǎn)擊 “添加…”:
如果需要同時(shí)匹配不區(qū)分端口的情況,可另外添加一個(gè)條件:
點(diǎn)擊 “應(yīng)用” 保存后,IIS 會(huì)自動(dòng)生成對(duì)應(yīng)的 web.config 片段。此時(shí)訪問(wèn)
http://會(huì)跳轉(zhuǎn)到/foohtjh.nethttp://www.。/foohtjh.net
3. 優(yōu)缺點(diǎn)
優(yōu)點(diǎn):通過(guò) GUI 操作即可完成,不需要修改代碼文件;支持更復(fù)雜的重寫規(guī)則。
缺點(diǎn):需要 IIS 環(huán)境及 URL 重寫模塊,如果沒(méi)有該模塊需先下載安裝;純靜態(tài)網(wǎng)站可能不想額外引入該模塊。
方法四:DNS URL 轉(zhuǎn)發(fā)(部分 DNS 服務(wù)商)
1. 原理與適用場(chǎng)景
部分 DNS 服務(wù)商(如某些域名注冊(cè)商)提供 “URL 轉(zhuǎn)發(fā)” 或 “URL 重定向” 功能,可以在其后臺(tái)直接配置,將裸域指向帶 www 的 URL。此種方式不依賴 Web 服務(wù)器配置,適合對(duì)服務(wù)器無(wú)控制權(quán)的場(chǎng)景。
2. 操作步驟
登錄 DNS 服務(wù)商的控制面板(常見(jiàn)平臺(tái):阿里云DNS、騰訊云 DNSPod、萬(wàn)網(wǎng)等)。
找到需要重定向的裸域記錄,選擇 “URL 轉(zhuǎn)發(fā)” 或 “URL 重定向” 類型(部分平臺(tái)稱為 “泛解析 URL 轉(zhuǎn)發(fā)”)。
填寫轉(zhuǎn)發(fā)目標(biāo) URL,如
http://www.。如果支持帶路徑轉(zhuǎn)發(fā),可填寫/htjh.nethttp://www.(不同平臺(tái)變量寫法不同,需參照其文檔)。/$pathhtjh.net保存后大約幾分鐘至幾小時(shí)內(nèi)生效(生效時(shí)間取決于 DNS TTL)。之后訪問(wèn)裸域會(huì)被服務(wù)器返回 301 重定向到帶 www 域名。
3. 優(yōu)缺點(diǎn)
優(yōu)點(diǎn):無(wú)須服務(wù)器配置,無(wú)需修改 Web 服務(wù)器或代碼;操作簡(jiǎn)便,上手快。
缺點(diǎn):部分服務(wù)商需要進(jìn)行ICP備案后才能使用;通常只支持簡(jiǎn)單的單 URL 轉(zhuǎn)發(fā),不支持 HTTPS;穩(wěn)定性和靈活性遜于服務(wù)器端配置。
方法五:PHP 代碼層面重定向
1. 適用場(chǎng)景
如果網(wǎng)站使用 PHP 作為后臺(tái)語(yǔ)言,可以在入口文件(如 index.php、header.php 等)中檢測(cè) $_SERVER['HTTP_HOST'],如果不是 www.,則通過(guò) PHP header 函數(shù)跳轉(zhuǎn)。這種方式對(duì)只會(huì)使用純靜態(tài)空間或無(wú)法配合服務(wù)器配置 .htaccess/.conf 的情況特別實(shí)用。htjh.net
2. 示例代碼
在以上層級(jí)的公共引導(dǎo)文件(如 index.php)最前面加入如下代碼:
<?php
$host = $_SERVER['HTTP_HOST'];
$requestUri = $_SERVER['REQUEST_URI'];
/*
* 如果訪問(wèn)的 Host 不是 www.gongst.com.cn 且不包含端口(或判斷端口情況),則做 301 跳轉(zhuǎn)
* 例如:判斷是否以 htjh.net 開(kāi)頭
*/
if (preg_match('/^htjh.net(:d+)?$/i', $host)) {
// 跳轉(zhuǎn)到帶 www 的域名,并保留原有請(qǐng)求路徑
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.gongst.com.cn" . $requestUri);
exit();
}
?>$_SERVER['HTTP_HOST']:獲取請(qǐng)求頭中的域名。preg_match('/^:匹配裸域或帶端口的裸域。.net(:d+)?$/i', $host)htjhheader("HTTP/1.1 301 Moved Permanently"):返回 301 永久重定向狀態(tài)碼。header("Location: https://www.:執(zhí)行跳轉(zhuǎn),并附加請(qǐng)求路徑。" . $requestUri)htjh.net
3. 優(yōu)缺點(diǎn)
優(yōu)點(diǎn):只需在代碼層面添加幾行即可生效,適合沒(méi)有服務(wù)器配置權(quán)限的純虛擬主機(jī)或空間。
缺點(diǎn):會(huì)增加 PHP 每次請(qǐng)求的開(kāi)銷,若訪問(wèn)路徑較長(zhǎng)或并發(fā)量大,對(duì)性能略有影響;且需保證此段代碼在最前執(zhí)行,避免頁(yè)面輸出后跳轉(zhuǎn)失效。
注意事項(xiàng)
選擇 301 永久重定向:在 SEO 場(chǎng)景下,務(wù)必使用
301 Moved Permanently,而不是臨時(shí)302,以便搜索引擎將舊鏈接權(quán)重轉(zhuǎn)移到新的帶 www 鏈接。SSL 證書(shū)覆蓋范圍:如果站點(diǎn)啟用了 HTTPS,建議同時(shí)在裸域和帶 www 域名上都配置證書(shū),才能在 HTTPS 裸域頁(yè)面直接跳轉(zhuǎn)到 HTTPS 帶 www?。否則有可能出現(xiàn)證書(shū)不匹配而導(dǎo)致瀏覽器警告。
DNS 解析 A 記錄/ CNAME 記錄:不論采取哪種方案,都需在 DNS 后臺(tái)將裸域和帶 www 分別解析到同一臺(tái)服務(wù)器 IP,尤其在使用服務(wù)器端配置時(shí),
需要有 A 記錄或 ALIAS / ANAME 記錄指向服務(wù)器。htjh.net通配符和端口號(hào):如果希望同時(shí)支持帶端口的訪問(wèn)(如
),需在正則匹配中添加端口號(hào)判斷。對(duì)于常見(jiàn)的 80/443 之外端口,可在正則里使用:8080htjh.net(:d+)?。避免重定向循環(huán):確保在匹配條件中只匹配裸域,避免將已經(jīng)是帶 www 的請(qǐng)求再次重定向,否則會(huì)造成循環(huán)跳轉(zhuǎn)。
測(cè)試與監(jiān)控:配置完成后,需要測(cè)試以下幾種情況是否正確跳轉(zhuǎn):
HTTP 裸域 → HTTP 帶 www
HTTP 裸域 → HTTPS 帶 www (若配置了多協(xié)議跳轉(zhuǎn))
HTTPS 裸域 → HTTPS 帶 www
可以使用curl -I http://等工具查看返回的 HTTP 狀態(tài)碼是否為 301。htjh.net
小結(jié)
通過(guò)上述方法,可以靈活地將不帶 www 的域名自動(dòng)跳轉(zhuǎn)到帶 www 的規(guī)范域名,以實(shí)現(xiàn) SEO 優(yōu)化、統(tǒng)一訪問(wèn)規(guī)范以及證書(shū)管理等目的。常見(jiàn)的服務(wù)器端方案有 Apache 的 .htaccess 配置、Nginx 的 server 塊配置、IIS 的 URL 重寫,以及 DNS 級(jí)別的 URL 轉(zhuǎn)發(fā)。在代碼層面,也可通過(guò) PHP header 函數(shù)實(shí)現(xiàn)簡(jiǎn)單的跳轉(zhuǎn)。根據(jù)自身服務(wù)器或空間的實(shí)際情況,選擇對(duì)應(yīng)方案進(jìn)行配置即可。


客服1