dede pc端如何自动跳转手机端?

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

使用 JS 脚本跳转(最推荐,兼容性好)

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

dede pc端跳转手机端
(图片来源网络,侵删)

优点:

  • 实现简单,只需修改模板文件。
  • 兼容性非常好,几乎所有浏览器都支持。
  • 对搜索引擎友好(Google 和百度都明确表示它们会执行 JS 并理解跳转)。

缺点:

  • 如果用户禁用了 JavaScript,则无法跳转。
  • 对于搜索引擎的抓取,理论上比服务端跳转稍慢一点点,但实际影响微乎其微。

操作步骤:

  1. 准备手机网站域名 你需要有一个专门用于手机访问的域名,

    • PC 端域名:www.yourdomain.com
    • 手机端域名:m.yourdomain.com (或者使用二级目录,如 www.yourdomain.com/m/,这里以独立域名 m.yourdomain.com 为例)
  2. 修改 PC 端模板文件 你需要修改你当前 PC 端正在使用的模板文件,通常是 index.htm (首页)、article_article.htm (文章页) 等,最规范的做法是修改一个公共模板文件,head.htm,这样所有页面都会生效。

    dede pc端跳转手机端
    (图片来源网络,侵删)

    登录你的 DedeCMS 后台,进入 “模板” -> “模板管理”,找到你当前使用的默认模板,然后修改 head.htm 文件。

  3. <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/
  4. 更新缓存并生成 在模板管理页面,找到底部的 “更新缓存”“生成首页” 按钮,依次点击,使修改生效。

当用户用手机访问你的 PC 端网站时,就会自动跳转到 m.yourdomain.com 了。


使用 PHP 服务器端跳转(更严谨,但略复杂)

这种方法通过 PHP 代码来判断用户代理(User-Agent),在服务器端就进行跳转,不依赖客户端的 JavaScript。

优点:

  • 更严谨,不受用户浏览器是否启用 JavaScript 的影响。
  • 对搜索引擎来说,这是最标准的“响应式”或“移动适配”信号之一。

缺点:

  • 实现相对复杂,需要修改 PHP 核心文件,有一定风险。
  • 如果修改不当,可能会导致网站后台或前台无法正常访问。

操作步骤:

  1. 找到并修改 index.php 文件 通过 FTP 或服务器文件管理器,进入你的网站根目录,找到 index.php 文件。

  2. 在文件开头添加 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.phparticle.phplist.php 等所有入口文件的开头,这非常麻烦,因此此方法通常只推荐用于首页

使用 .htaccess 文件跳转(Apache 服务器专用)

如果你的网站服务器是 Apache,并且开启了 mod_rewrite 模块(通常虚拟主机都默认开启),可以通过 .htaccess 文件来实现,这也是一种服务器端跳转。

优点:

  • 不需要修改任何 PHP 或 HTML 文件,纯配置文件。
  • 服务器端执行,速度快,不受 JS 影响。

缺点:

  • 仅限 Apache 服务器。
  • 同样,默认只对首页有效,需要为不同目录配置规则才能实现全站跳转。

操作步骤:

  1. 找到 .htaccess 文件 在你的网站根目录下找到 .htaccess 文件,如果不存在,则新建一个。

  2. 添加 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 模板文件,就能轻松实现全站跳转,非常方便。

-- 展开阅读全文 --
头像
dede图集关键字为何不能用逗号分隔?
« 上一篇 今天
C语言如何实现Modbus TCP通信?
下一篇 » 今天

相关文章

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

目录[+]