使用JavaScript跳转(推荐)
这是最常用、最简单的方法,对网站改动最小,且不会影响搜索引擎的收录。

(图片来源网络,侵删)
原理
通过JavaScript检测当前访问设备的屏幕宽度或User-Agent(用户代理字符串),如果判断为移动设备,则使用 window.location.href 将页面重定向到对应的手机端网址。
操作步骤
-
创建手机端模板
- 在你的织梦后台,复制一份PC端的模板文件,
index_pc.htm,并将其重命名为index_mobile.htm。 - 在
index_mobile.htm中,修改所有资源(CSS, JS, 图片)的路径,确保它们是移动端适配的,通常这些资源会放在一个/mobile/或/m/目录下。 - 修改织梦的模板标签,确保手机端能正确调用内容,列表标签、文章标签等通常可以直接复用,但要注意分页等功能的兼容性。
- 在你的织梦后台,复制一份PC端的模板文件,
-
修改PC端模板
- 打开你的PC端首页模板文件,通常是
/templets/default/index.htm。 - 在
<head>和</head>标签之间,添加以下JavaScript代码:
<script> (function(){ 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.indexOf('m.') == -1) { // 将你的PC端域名替换为手机端域名 window.location.href = 'https://你的手机端域名.com' + window.location.pathname + window.location.search; } } browserRedirect(); })(); </script>代码说明:
(图片来源网络,侵删)navigator.userAgent.toLowerCase()获取浏览器的用户代理信息。- 代码通过正则表达式匹配常见的移动设备关键词(如
iphone,android,ipad等)。 window.location.href.indexOf('m.') == -1这个判断非常重要,它防止了无限循环跳转,如果你的手机端域名是m.yourdomain.com,这个条件可以防止已经访问手机端域名的用户再次被跳转回PC端,如果你的手机端是二级目录(如yourdomain.com/m/),这个判断可能需要调整,或者直接去掉。window.location.pathname和window.location.search用于获取当前页面的路径和查询参数(访问yourdomain.com/list.php?tid=1,手机端会跳转到https://你的手机端域名.com/list.php?tid=1),确保跳转后访问的是对应的页面。
- 打开你的PC端首页模板文件,通常是
-
测试
- 在电脑上访问你的网站,页面应保持不变。
- 使用手机浏览器或浏览器的“开发者工具”模拟手机模式访问,页面应自动跳转到你设置的手机端网址。
使用PHP跳转
这种方法在服务器端完成判断,理论上比JS跳转更“底层”,但实现起来稍复杂,且需要修改核心文件,有一定风险。
原理
在PHP代码执行时,判断访问的设备类型,如果是移动设备,则使用 header('Location: ...') 进行重定向。
操作步骤
-
准备手机端模板
同方法一,准备好你的手机端模板和资源。
-
修改织梦核心文件
- 警告: 修改核心文件(如
index.php)在织梦升级时可能会被覆盖,导致修改丢失,请务必提前备份文件! - 找到你的网站根目录下的
index.php文件。 - 在文件开头
<?php之后,require_once(dirname(__FILE__)."/include/common.inc.php");之前,添加以下PHP代码:
<?php // ====================== 手机端跳转代码 Start ====================== function isMobile() { // 如果有HTTP_X_WAP_PROFILE,则一定是移动设备 if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) { return true; } // 如果有HTTP_VIA,则为代理服务器,判断是否为移动设备 if (isset($_SERVER['HTTP_VIA'])) { return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false; } // 获取User-Agent信息 $user_agent = strtolower($_SERVER['HTTP_USER_AGENT']); // 匹配移动设备的关键词 $mobile_agents = array( 'iphone', 'android', 'ipod', 'ipad', 'windows phone', 'blackberry', 'opera mini', 'ucweb', 'fennec', 'iemobile', 'symbianos' ); foreach ($mobile_agents as $device) { if (strpos($user_agent, $device) !== false) { return true; } } return false; } // 如果是移动设备,并且当前URL不包含 'm.',则跳转到手机端 if (isMobile() && strpos($_SERVER['HTTP_HOST'], 'm.') === false) { // 将你的PC端域名替换为手机端域名 $mobile_url = str_replace('http://', 'https://m.', 'http://' . $_SERVER['HTTP_HOST']) . $_SERVER['REQUEST_URI']; header('Location: ' . $mobile_url); exit; // 跳转后必须终止脚本执行 } // ====================== 手机端跳转代码 End ====================== require_once(dirname(__FILE__)."/include/common.inc.php");代码说明:
isMobile()函数通过检查HTTP_USER_AGENT等信息来判断设备类型。strpos($_SERVER['HTTP_HOST'], 'm.') === false同样是为了防止循环跳转,确保只在从PC端域名访问时才跳转。header('Location: ...')是PHP的页面重定向函数。exit;或die();非常重要! 在执行header重定向后,必须立即终止脚本,否则后续代码仍会执行,可能导致重定向失败或出现其他问题。
- 警告: 修改核心文件(如
-
测试
测试方法同JS跳转,确保PC端正常,移动端能正确跳转。
两种方法的对比与选择
| 特性 | JavaScript跳转 | PHP跳转 |
|---|---|---|
| 实现难度 | 简单,只需修改模板文件。 | 较复杂,需要修改核心PHP文件。 |
| 修改范围 | 安全,不涉及织梦核心,升级无忧。 | 有风险,织梦升级后修改可能丢失。 |
| 跳转时机 | 客户端(浏览器)执行,页面加载后跳转,用户可能看到一闪而过的PC页面。 | 服务器端执行,用户直接请求到手机端URL,体验更“原生”。 |
| SEO影响 | 无影响,搜索引擎看到的是PC端URL,但会通过 rel="alternate" 和 canonical 标签来关联。 |
无直接影响,但搜索引擎抓取到的是手机端URL。 |
| 兼容性 | 依赖JavaScript,如果用户禁用了JS,则无法跳转(但这种情况极少)。 | 不依赖客户端,只要能访问网站,就能跳转。 |
| 推荐度 | ★★★★★ (强烈推荐) | ★★★☆☆ (适用于特定需求,如必须无缝跳转) |
重要补充:SEO最佳实践(强烈建议)
无论你选择哪种跳转方式,为了搜索引擎能够正确识别PC端和移动端页面的对应关系,你都应该在模板的 <head> 部分添加两个重要的标签。
-
在PC端模板 (
index.htm) 的<head>中添加:<link rel="alternate" media="only screen and (max-width: 640px)" href="https://你的手机端域名.com" /> <link rel="canonical" href="https://你的PC端域名.com" />
-
在手机端模板 (
index_mobile.htm) 的<head>中添加:<link rel="canonical" href="https://你的PC端域名.com" /> <meta name="applicable-device" content="mobile">
作用解释:
rel="alternate":告诉搜索引擎,这个页面有一个为移动设备准备的替代版本。rel="canonical":告诉搜索引擎,这个页面是主版本(规范页面),避免因URL不同而导致内容重复(Duplicate Content)问题。
对于绝大多数织梦用户来说,使用JavaScript跳转是最佳选择,它简单、安全、易于维护,并且配合SEO标签,可以完美实现PC端和手机端的自动跳转与关联。
如果你的网站对跳转的“无缝性”要求极高,不希望用户看到任何PC页面的痕迹,并且不介意修改核心文件,那么可以考虑使用PHP跳转,但请务必做好备份。
