使用 JS 脚本跳转(最推荐,兼容性好)
这是最主流、最简单的方法,通过在 PC 端的模板文件中插入一段 JavaScript 代码,检测用户的访问设备,如果是手机或平板,就自动跳转到对应的手机网站地址。

优点:
- 实现简单,只需修改模板文件。
- 兼容性非常好,几乎所有浏览器都支持。
- 对搜索引擎友好(Google 和百度都明确表示它们会执行 JS 并理解跳转)。
缺点:
- 如果用户禁用了 JavaScript,则无法跳转。
- 对于搜索引擎的抓取,理论上比服务端跳转稍慢一点点,但实际影响微乎其微。
操作步骤:
-
准备手机网站域名 你需要有一个专门用于手机访问的域名,
- PC 端域名:
www.yourdomain.com - 手机端域名:
m.yourdomain.com(或者使用二级目录,如www.yourdomain.com/m/,这里以独立域名m.yourdomain.com为例)
- PC 端域名:
-
修改 PC 端模板文件 你需要修改你当前 PC 端正在使用的模板文件,通常是
index.htm(首页)、article_article.htm(文章页) 等,最规范的做法是修改一个公共模板文件,head.htm,这样所有页面都会生效。
(图片来源网络,侵删)登录你的 DedeCMS 后台,进入 “模板” -> “模板管理”,找到你当前使用的默认模板,然后修改
head.htm文件。 -
在
<head>标签内插入 JS 代码 打开head.htm文件,在<head>和</head>标签之间,添加以下代码:<script> function browserRedirect() { var sUserAgent = navigator.userAgent.toLowerCase(); var bIsIpad = sUserAgent.match(/ipad/i) == "ipad"; var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os"; var bIsMidp = sUserAgent.match(/midp/i) == "midp"; var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4"; var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb"; var bIsAndroid = sUserAgent.match(/android/i) == "android"; var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce"; var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile"; // 如果是手机或平板设备,则跳转到手机网站 if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) { window.location.href = "http://m.yourdomain.com"; /* 请替换成你的手机网站域名 */ } } browserRedirect(); </script>重要提示:
- 请务必将代码中的
http://m.yourdomain.com替换成你自己的手机网站域名。 - 如果你的手机网站是二级目录形式(如
www.yourdomain.com/m/),则将地址修改为http://www.yourdomain.com/m/。
- 请务必将代码中的
-
更新缓存并生成 在模板管理页面,找到底部的 “更新缓存” 和 “生成首页” 按钮,依次点击,使修改生效。
当用户用手机访问你的 PC 端网站时,就会自动跳转到 m.yourdomain.com 了。
使用 PHP 服务器端跳转(更严谨,但略复杂)
这种方法通过 PHP 代码来判断用户代理(User-Agent),在服务器端就进行跳转,不依赖客户端的 JavaScript。
优点:
- 更严谨,不受用户浏览器是否启用 JavaScript 的影响。
- 对搜索引擎来说,这是最标准的“响应式”或“移动适配”信号之一。
缺点:
- 实现相对复杂,需要修改 PHP 核心文件,有一定风险。
- 如果修改不当,可能会导致网站后台或前台无法正常访问。
操作步骤:
-
找到并修改
index.php文件 通过 FTP 或服务器文件管理器,进入你的网站根目录,找到index.php文件。 -
在文件开头添加 PHP 判断代码 用代码编辑器打开
index.php,在 最顶端(在<?php之后,在任何其他代码之前)添加以下代码:<?php // 移动端跳转 function isMobile() { // 如果有HTTP_X_WAP_PROFILE,则一定是移动设备 if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) { return true; } // 如果via信息含有wap,则一定是移动设备 if (isset($_SERVER['HTTP_VIA'])) { return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false; } // 获取手机发送的客户端标志 if (isset($_SERVER['HTTP_USER_AGENT'])) { $clientkeywords = array('nokia', 'sony', 'ericsson', 'mot', 'samsung', 'htc', 'sgh', 'lg', 'sharp', 'sie-', 'philips', 'panasonic', 'alcatel', 'lenovo', 'iphone', 'ipod', 'blackberry', 'meizu', 'android', 'netfront', 'symbian', 'ucweb', 'windowsce', 'palm', 'operamini', 'operamobi', 'openwave', 'nexusone', 'cldc', 'midp', 'wap', 'mobile'); // 从HTTP_USER_AGENT中查找手机浏览器的关键字 if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) { return true; } } // 协议法,因为有可能不准确,放到最后判断 if (isset($_SERVER['HTTP_ACCEPT'])) { // 如果只支持wml并且不支持html那一定是移动设备 // 如果支持wml和html但是wml在html之前则是移动设备 if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) { return true; } } return false; } // 如果是移动设备,跳转到手机网站 if (isMobile()) { header("Location: http://m.yourdomain.com"); /* 请替换成你的手机网站域名 */ exit; // 跳转后必须退出,否则后续代码会继续执行 } ?>重要提示:
- 同样,请务必将
http://m.yourdomain.com替换成你自己的手机网站域名。 - 这段代码会作用于
index.php,也就是网站的首页,如果你希望所有页面(如文章页、列表页)都跳转,你需要将这段代码添加到index.php、article.php、list.php等所有入口文件的开头,这非常麻烦,因此此方法通常只推荐用于首页。
- 同样,请务必将
使用 .htaccess 文件跳转(Apache 服务器专用)
如果你的网站服务器是 Apache,并且开启了 mod_rewrite 模块(通常虚拟主机都默认开启),可以通过 .htaccess 文件来实现,这也是一种服务器端跳转。
优点:
- 不需要修改任何 PHP 或 HTML 文件,纯配置文件。
- 服务器端执行,速度快,不受 JS 影响。
缺点:
- 仅限 Apache 服务器。
- 同样,默认只对首页有效,需要为不同目录配置规则才能实现全站跳转。
操作步骤:
-
找到
.htaccess文件 在你的网站根目录下找到.htaccess文件,如果不存在,则新建一个。 -
添加 Rewrite 规则 在
.htaccess文件中添加以下代码:<IfModule mod_rewrite.c> RewriteEngine On # 检查 User-Agent 是否包含移动设备关键词 RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palm|googlebot-mobile|mobile|windows phone" [NC] # 如果是移动设备,并且访问的是首页或任何路径 RewriteRule ^(.*)$ http://m.yourdomain.com/ [L,R=302] </IfModule>重要提示:
- 请务必将
http://m.yourdomain.com替换成你自己的手机网站域名。 [L,R=302]表示Last Rule(最后一条规则) 和302临时重定向,使用302是因为搜索引擎在不确定内容是否永久时,更倾向于使用临时重定向,如果你的手机站是永久性的,可以改为301。
- 请务必将
总结与推荐
| 方法 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| JS 跳转 | 简单、安全、兼容性好、SEO 影响小 | 依赖 JS,用户禁用后无效 | 强烈推荐,适用于绝大多数 DedeCMS 网站。 |
| PHP 跳转 | 严谨、服务器端执行、对 SEO 最友好 | 修改核心文件,有风险,难维护 | 适合技术能力强,需要极致严谨的网站,尤其推荐用于首页跳转。 |
.htaccess 跳转 |
纯配置、不修改代码、服务器端执行 | 仅限 Apache,配置复杂 | 适合 Apache 服务器,且不想修改 PHP 文件的用户。 |
对于绝大多数 DedeCMS 方法一(JS 跳转)是最佳选择,它简单、安全,并且效果已经足够好,只需修改一个 head.htm 模板文件,就能轻松实现全站跳转,非常方便。
