在設定 WordPress 移動端域名的時候,常常會被「到底要不要另開一個子域?」這個問題卡住。其實,從 SEO、使用者體驗到安全性,都有不少值得注意的細節,只要一步步跟著檢查,就不會像我剛開始那樣手忙腳亂。
為什麼要為行動版設定獨立域名?
- 搜尋引擎偏好:Google 在 2021 年的統計顯示,使用 responsive 設計的站點在行動搜尋的點擊率提升約 12%。如果把行動版獨立在
m.example.com,需要額外的 canonical 設定,否則容易被視為重複內容。 - SSL 證書一致性:若主站已安裝
https://www.example.com的證書,行動版如果僅用http://m.example.com,瀏覽器會直接警告「不安全」,這對轉換率的衝擊不容小覷。 - CDN 與快取:行動裝置多半使用較慢的網路,將行動域名指向專屬的 CDN 節點(例如 Cloudflare 的 Mobile Optimized 設定),可以讓頁面載入時間減少 30% 以上。
基本 DNS 與 SSL 設定步驟
- 新增子域名:在 DNS 管理介面新增
m或mobile的 A 記錄,指向同一台伺服器的 IP。 - 申請對應的 SSL:使用 Let’s Encrypt 時,只要一次性把
example.com、www.example.com、m.example.com都列入 SAN(Subject Alternative Name),就能一次取得三個域名的憑證。 - 檢查 HTTPS 重導:在
.htaccess加入RewriteCond %{HTTPS} off→RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301],確保所有行動流量都走安全通道。
在 wp-config.php 中動態切換域名
WordPress 本身支援透過 WP_HOME 與 WP_SITEURL 兩個常數來覆寫設定值。把以下程式碼放在 /* That's all, stop editing! Happy publishing. */ 之上,就能自動偵測使用者是桌面還是行動裝置:
$host = $_SERVER['HTTP_HOST'];
$is_mobile = preg_match('/mobile|m./i', $host);
if ($is_mobile) {
define('WP_HOME', 'https://m.example.com');
define('WP_SITEURL', 'https://m.example.com');
} else {
define('WP_HOME', 'https://www.example.com');
define('WP_SITEURL', 'https://www.example.com');
}
這段程式的關鍵在於 $_SERVER['HTTP_HOST'] 會回傳當前請求的域名,配合正則表達式即可判斷是否為行動子域。若你想更精細地辨識手機瀏覽器,也可以結合 $_SERVER['HTTP_USER_AGENT'],但那樣會稍微增加伺服器負擔。
常見的坑與解決方式
- Cookie 同步問題:行動與桌面使用不同域名時,登入狀態的 cookie 只會在各自的子域生效。解決方法是把
COOKIE_DOMAIN設為.example.com,讓兩個子域共享同一個 cookie。 - 主題相容性:不是所有 WordPress 主題都支援行動子域。測試時最好挑選官方推薦的 responsive 主題,或自行在
functions.php加入add_filter('template_directory','...')讓行動版載入專屬樣式表。 - 搜尋引擎索引:在 Google Search Console 為
m.example.com新增站點,並提交 sitemap,避免因為未被收錄而失去流量。
總的來說,配置 WordPress 移動端域名不只是改 DNS 那麼簡單,從 SSL、快取、Cookie 到 SEO 每一步都要仔細檢查。只要把上面的步驟照著走,既能提升行動使用者的載入速度,又能保持搜尋排名的穩定,說不定還會收到「網站變快了」的好評呢。

評論(4)
之前就是沒設好 canonical,結果被 Google 當成重複內容,這篇來得剛好!
Cookie 同步那個坑我真的踩過,登入狀態一直跳掉,設成 .example.com 就解決了👍
現在大家都直接用 RWD 響應式設計了吧?還需要特別開個 m. 子域嗎?
原來 Let’s Encrypt 可以一次把三個域名包進去,省了不少手續費~