實現「同一域名、不同設備顯示不同首頁」的核心是**解析 HTTP 請求標頭中的 `User-Agent` 字串**。
| 設備 | UA 關鍵字範例 |
|---|---|
| iPhone | `iPhone`、`iOS`、`Mobile`、`Safari` |
| Android 手機 | `Android`、`Mobile`、`Chrome` |
| iPad | `iPad`、`Macintosh`(iPadOS 13+ 偽裝桌面) |
| Android 平板 | `Android`、無 `Mobile` 或含 `Tablet` |
| Windows PC | `Windows NT`、`Win64`、`x64`、無 `Mobile` |
| Mac | `Macintosh`、`Intel Mac OS X` |
# nginx.conf
map $http_user_agent $device_type {
default "pc";
"~*iPhone|Android.*Mobile" "mobile";
"~*iPad|Android.*Tablet" "tablet";
}
server {
location / {
# 重寫根路徑
rewrite ^/$ /index-$device_type.html last;
# 或 proxy_pass 到不同 upstream
}
}
@GetMapping("/")
public String index(HttpServletRequest request) {
String ua = request.getHeader("User-Agent").toLowerCase();
if (ua.contains("iphone") || (ua.contains("android") && ua.contains("mobile"))) {
return "mobile/index"; // 手機首頁模板
} else if (ua.contains("ipad") || (ua.contains("android") && !ua.contains("mobile"))) {
return "tablet/index"; // 平板首頁
}
return "pc/index"; // PC 首頁
}
**單一 HTML + CSS Media Queries / Bootstrap / Tailwind 響應式佈局**,根據螢幕寬度自動適配,**無需伺服器端判斷 UA**,維護成本最低、SEO 最友好(單一 URL)。