“织梦手机版m跳转”通常指的是两种场景:

- 自动跳转:用户在电脑上访问
yourdomain.com时,系统自动检测到是手机用户,然后自动跳转到m.yourdomain.com。 - 手动跳转:提供一个明显的链接,让用户可以主动选择进入手机版网站。
下面我将分别介绍这两种实现方法,并提供最常用和最可靠的代码。
自动跳转(推荐)
这是最主流的方式,用户体验最好,实现自动跳转的核心是检测用户设备类型,如果是手机或平板,就执行跳转。
方法1:使用织梦自带的 autoindex.php(最简单、最官方)
织梦DedeCMS从V5.7版本开始,在手机模板目录 /templets/default 下自带了一个 autoindex.php 文件,专门用于实现自动跳转。
操作步骤:

-
确保你的电脑版网站根目录下有
index.php文件。 -
找到并修改
index.php文件。 在index.php文件的开头(<?php之后),加入以下一行代码:// 手机自动跳转 if(!is_mobile() && !defined('M')){ header("Location: /m/"); exit(); }is_mobile()是织梦自带的一个判断函数,它会检查用户代理(User-Agent)来判断是否为移动设备。!defined('M')是一个判断,防止手机版内部再次跳转,形成死循环。header("Location: /m/");这行代码是执行跳转,/m/是你的手机版网站目录。请确保你的手机版目录确实是/m/,如果不是,请修改成你自己的目录,/mobile/。exit();跳转后立即终止脚本执行。
-
上传并覆盖修改后的
index.php文件到你的服务器。
优点:

- 官方支持,最稳定。
- 代码量少,操作简单。
缺点:
- 只对首页的
index.php有效,如果你希望其他页面(如文章页article.php)也能自动跳转,需要在对应的文件中同样加入这段代码。
方法2:使用通用PHP跳转代码(更灵活)
如果你想在所有页面都实现跳转,或者你的织梦版本较旧,可以使用这个更通用的方法,它通过一个公共函数来判断,然后在每个需要跳转的页面引入。
操作步骤:
-
创建一个公共函数文件。 在你的网站根目录下创建一个名为
mobile_device_detect.php的文件,并粘贴以下代码:<?php // mobile_device_detect.php function is_mobile() { // 如果有手机版参数,则不跳转 if (isset($_GET['mobile'])) { return false; } // 常见的移动设备关键词 $mobile_browser = Array( 'iphone', 'android', 'ipod', 'ipad', 'windows phone', 'mobile', 'phone', 'blackberry', 'opera mobi', 'opera mini', 'fennec', 'htc', 'gozilla', 'mobile', 'palm', 'series60', 'nokia', 'sonyericsson', 'blackberry', 'vodafone', 'o2', 'wap', 'windows ce' ); // 获取用户代理信息 $user_agent = strtolower($_SERVER['HTTP_USER_AGENT']); $is_mobile = false; // 检查是否包含移动设备关键词 foreach ($mobile_browser as $device) { if (strpos($user_agent, $device) !== false) { $is_mobile = true; break; } } // 检查是否来自移动运营商 if (preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|android|ipad|iphone|ipod|ios)/i', strtolower($_SERVER['HTTP_USER_AGENT']))) { $is_mobile = true; } // 检查HTTP_ACCEPT头 if ((strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') > 0) or ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))) { $is_mobile = true; } // 检查设备屏幕尺寸(通过HTTP头或JavaScript,这里简化处理) if (isset($_SERVER['HTTP_X_OPERAMINI_PHONE_UA'])) { $is_mobile = true; } return $is_mobile; } ?> -
在需要跳转的页面引入此函数。 打开你需要实现跳转的页面文件(如
index.php,article.php,list.php等)。 在文件的最开头(<?php之后),加入以下代码:// 引入移动设备检测函数 require_once 'mobile_device_detect.php'; // 如果是移动设备且不是手机版页面,则跳转 if (is_mobile() && !defined('M')) { header("Location: /m/"); exit(); }require_once 'mobile_device_detect.php';引入我们刚才创建的函数文件。!defined('M')同样是为了防止循环跳转。header("Location: /m/");将/m/替换为你自己的手机版目录。
-
上传文件。 将
mobile_device_detect.php和所有修改过的页面文件上传到服务器。
优点:
- 非常灵活,可以轻松应用到所有页面。
- 自定义程度高,可以修改
is_mobile()函数来调整检测逻辑。
缺点:
- 需要修改多个文件,比方法一麻烦。
手动跳转(补充方案)
手动跳转通常用于提供一个明确的“访问手机版”的链接,让用户自己选择,这对于不希望被强制跳转的用户来说是个很好的补充。
实现方法:
在电脑版的模板文件(/templets/default/index.htm)的合适位置(通常是页脚或顶部导航栏),添加以下链接代码:
<a href="/m/" rel="alternate" hreflang="x-default">访问手机版</a>
或者,如果你想更智能一点,可以结合上面的检测函数,让这个链接只在非移动设备上显示:
方法A:直接使用织梦标签(推荐)
在模板文件中,使用织梦的 dede:php 标签来动态判断。
{dede:php}
require_once 'mobile_device_detect.php'; // 确保路径正确
if (!is_mobile()) {
echo '<a href="/m/" rel="alternate" hreflang="x-default">访问手机版</a>';
}
{/dede:php}
方法B:纯HTML链接(简单直接)
如果你只是想放一个固定的链接,不进行任何判断,直接使用HTML即可。
<a href="/m/" rel="alternate" hreflang="x-default">访问手机版</a>
重要注意事项
- 手机版目录:请务必将代码中的
/m/替换为你自己手机网站的实际目录,/mobile/、/wap/等。 php页面:建议为你的手机版目录(如/m/)也设置一个php页面,这样当用户在手机版访问一个不存在的页面时,会跳转到手机版的404页面,而不是电脑版的。- SEO优化(
rel="alternate"和hreflang):在手动跳转链接上使用rel="alternate"和hreflang="x-default"是一个很好的SEO实践,它告诉搜索引擎,yourdomain.com和m.yourdomain.com是同一内容的不同版本,有助于搜索引擎正确索引你的网站。 - 测试:在设置好跳转后,请务必使用不同的手机和电脑进行测试,确保跳转逻辑正确无误,并且没有出现死循环等问题。
| 需求 | 推荐方法 | 优点 | 缺点 |
|---|---|---|---|
| 首页自动跳转 | 方法1:修改 index.php |
最简单、最官方、稳定 | 仅对首页有效 |
| 全站自动跳转 | 方法2:通用PHP代码 | 灵活,可应用于所有页面 | 需要修改多个文件,稍复杂 |
| 用户手动选择 | 在模板中添加链接 | 用户体验友好,SEO友好 | 需要手动操作 |
对于大多数用户来说,方法1(修改 index.php) 是实现首页自动跳转的最佳选择,如果需要全站跳转,则采用方法2,在电脑版页脚添加一个手动跳转链接作为补充,是更完善的解决方案。
