织梦手机端跳转如何设置?

99ANYc3cd6
预计阅读时长 21 分钟
位置: 首页 织梦建站 正文

使用JavaScript跳转(推荐)

这是最常用、最简单的方法,对网站改动最小,且不会影响搜索引擎的收录。

织梦如何跳转手机端
(图片来源网络,侵删)

原理

通过JavaScript检测当前访问设备的屏幕宽度或User-Agent(用户代理字符串),如果判断为移动设备,则使用 window.location.href 将页面重定向到对应的手机端网址。

操作步骤

  1. 创建手机端模板

    • 在你的织梦后台,复制一份PC端的模板文件,index_pc.htm,并将其重命名为 index_mobile.htm
    • index_mobile.htm 中,修改所有资源(CSS, JS, 图片)的路径,确保它们是移动端适配的,通常这些资源会放在一个 /mobile//m/ 目录下。
    • 修改织梦的模板标签,确保手机端能正确调用内容,列表标签、文章标签等通常可以直接复用,但要注意分页等功能的兼容性。
  2. 修改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.pathnamewindow.location.search 用于获取当前页面的路径和查询参数(访问 yourdomain.com/list.php?tid=1,手机端会跳转到 https://你的手机端域名.com/list.php?tid=1),确保跳转后访问的是对应的页面。
  3. 测试

    • 在电脑上访问你的网站,页面应保持不变。
    • 使用手机浏览器或浏览器的“开发者工具”模拟手机模式访问,页面应自动跳转到你设置的手机端网址。

使用PHP跳转

这种方法在服务器端完成判断,理论上比JS跳转更“底层”,但实现起来稍复杂,且需要修改核心文件,有一定风险。

原理

在PHP代码执行时,判断访问的设备类型,如果是移动设备,则使用 header('Location: ...') 进行重定向。

操作步骤

  1. 准备手机端模板

    同方法一,准备好你的手机端模板和资源。

  2. 修改织梦核心文件

    • 警告: 修改核心文件(如 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 重定向后,必须立即终止脚本,否则后续代码仍会执行,可能导致重定向失败或出现其他问题。
  3. 测试

    测试方法同JS跳转,确保PC端正常,移动端能正确跳转。


两种方法的对比与选择

特性 JavaScript跳转 PHP跳转
实现难度 简单,只需修改模板文件。 较复杂,需要修改核心PHP文件。
修改范围 安全,不涉及织梦核心,升级无忧。 有风险,织梦升级后修改可能丢失。
跳转时机 客户端(浏览器)执行,页面加载后跳转,用户可能看到一闪而过的PC页面。 服务器端执行,用户直接请求到手机端URL,体验更“原生”。
SEO影响 无影响,搜索引擎看到的是PC端URL,但会通过 rel="alternate"canonical 标签来关联。 无直接影响,但搜索引擎抓取到的是手机端URL。
兼容性 依赖JavaScript,如果用户禁用了JS,则无法跳转(但这种情况极少)。 不依赖客户端,只要能访问网站,就能跳转。
推荐度 ★★★★★ (强烈推荐) ★★★☆☆ (适用于特定需求,如必须无缝跳转)

重要补充:SEO最佳实践(强烈建议)

无论你选择哪种跳转方式,为了搜索引擎能够正确识别PC端和移动端页面的对应关系,你都应该在模板的 <head> 部分添加两个重要的标签。

  1. 在PC端模板 (index.htm) 的 <head> 中添加:

    <link rel="alternate" media="only screen and (max-width: 640px)" href="https://你的手机端域名.com" />
    <link rel="canonical" href="https://你的PC端域名.com" />
  2. 在手机端模板 (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跳转,但请务必做好备份。

-- 展开阅读全文 --
头像
gets函数在C语言中到底有什么用?
« 上一篇 今天
dede如何读取指定栏目的详细内容?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]