这是一个非常常见的移动化网站需求,核心思想是:当用户通过手机访问时,自动将他们重定向到专门为手机优化的手机域名网站。

整个过程可以分为两大步:
- 准备工作:创建手机网站。
- 设置重定向:在主站或服务器上配置,实现自动跳转。
第一步:准备工作 - 创建手机网站
在配置重定向之前,你必须先有一个手机网站可以跳转,这个手机网站可以是:
- 一个完全独立的移动站点(
m.yourdomain.com)。 - 一个使用响应式设计、自适应PC和手机屏幕的网站(这种情况下就不需要跳转了,但通常独立手机站体验更好)。
- 在主站内建立一个
/mobile/这样的目录,专门存放手机版内容。
我们以最常见的情况为例:你有一个独立的手机域名 m.yourdomain.com,并且已经将手机网站的所有文件上传并配置好了。
第二步:设置重定向 - 根据你的服务器环境选择方法
重定向的关键是 “识别用户设备” 和 “执行跳转”,识别设备主要通过检测 HTTP_USER_AGENT(用户代理),也就是浏览器发送的字符串,里面包含了设备信息(如 iPhone, Android, iPad 等)。

以下是几种主流服务器环境下的配置方法:
使用 PHP 代码 (推荐,通用性最强)
这是最灵活的方法,可以直接将代码放在你主站的 index.php 文件中,它适用于任何支持 PHP 的服务器环境。
操作步骤:
- 打开你主网站的根目录下的
index.php文件。 - 在
<?php标签之后,require_once(dirname(__FILE__)."/include/common.inc.php");这行代码之前,添加以下 PHP 代码。
<?php
// ====================== 手机域名重定向开始 ======================
// 设置你的手机域名
$mobile_domain = 'm.yourdomain.com';
// 获取用户的 User-Agent
$user_agent = $_SERVER['HTTP_USER_AGENT'];
// 定义一个移动设备列表数组
$mobile_agents = array(
'iphone', 'android', 'phone', 'mobile', 'wap', 'netfront', 'opera mobi',
'opera mini', 'iemobile', 'samsung', 'nokia', 'sonyericsson',
'blackberry', 'ucweb', 'windows ce', 'symbian', 'series60',
'series40', 'samsung', 'nokia', 'sonyericsson', 'blackberry', 'ipad'
);
// 检查 User-Agent 中是否包含移动设备关键词
$is_mobile = false;
foreach ($mobile_agents as $device) {
if (strpos(strtolower($user_agent), $device) !== false) {
$is_mobile = true;
break;
}
}
// 如果是移动设备访问,并且当前访问的不是手机域名,则执行跳转
if ($is_mobile && strpos(strtolower($_SERVER['HTTP_HOST']), $mobile_domain) === false) {
// 获取当前页面的URL路径,/about.html
$path = $_SERVER['REQUEST_URI'];
// 构建完整的手机域名URL
$mobile_url = 'http://' . $mobile_domain . $path;
// 执行301永久跳转,有利于SEO
header("HTTP/1.1 301 Moved Permanently");
header("Location: " . $mobile_url);
// 终止脚本执行
exit();
}
// ====================== 手机域名重定向结束 ======================
require_once(dirname(__FILE__)."/include/common.inc.php");
// ... 后面的 dedecms 代码 ...
代码说明:

$mobile_domain = 'm.yourdomain.com';:请务必修改成你自己的手机域名。- 这个脚本会检查访问者是否在使用手机或平板,如果是,并且他访问的是主域名(如
www.yourdomain.com),就会自动将他永久重定向到手机域名(如m.yourdomain.com)的相同页面。 - 使用
301跳转是最佳实践,它告诉搜索引擎这个页面已经永久移动到了新地址,对SEO非常友好。
使用 Nginx 服务器配置 (如果你的服务器是 Nginx)
Nginx 性能更高,通过配置文件来实现重定向是更优的选择。
操作步骤:
- 登录你的 Nginx 服务器。
- 找到你的网站配置文件,通常位于
/etc/nginx/sites-available/目录下,文件名可能是你的域名。 - 在
server块中添加以下location和if判断。
server {
listen 80;
server_name www.yourdomain.com yourdomain.com; # 你的主域名
# ... 其他配置,如 root, index 等 ...
# ====================== 手机域名重定向开始 ======================
# 检测 User-Agent 并重定向
if ($http_user_agent ~* "(iphone|android|phone|mobile|wap|netfront|opera mobi|opera mini|iemobile|samsung|nokia|sonyericsson|blackberry|ucweb|windows ce|symbian|series60|series40|ipad)") {
# 如果访问的不是手机域名,则重定向
if ($host != "m.yourdomain.com") {
return 301 http://m.yourdomain.com$request_uri;
}
}
# ====================== 手机域名重定向结束 ======================
# ... DedeCMS 的其他 location 配置 ...
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# ... PHP-FPM 配置等 ...
}
配置说明:
if ($http_user_agent ~* "..."):这里的 表示不区分大小写的正则匹配,括号里的列表和方法一中的 PHP 代码类似,都是常见的移动设备关键词。if ($host != "m.yourdomain.com"):确保只有访问主域名时才跳转,避免手机域名访问自身时又跳回去,造成死循环。return 301 http://m.yourdomain.com$request_uri;:执行 301 跳转,$request_uri会自动保留用户原来访问的路径。
- 保存文件后,重新加载 Nginx 配使生效:
sudo nginx -s reload
使用 Apache 服务器配置 (如果你的服务器是 Apache)
操作步骤:
- 登录你的 Apache 服务器。
- 确保你的网站启用了
mod_rewrite模块(DedeCMS 的伪静态已经需要它了)。 - 在网站的根目录下创建或编辑
.htaccess文件。 - 在文件中添加以下代码:
# ====================== 手机域名重定向开始 ======================
<IfModule mod_rewrite.c>
RewriteEngine On
# 定义移动设备列表
RewriteCond %{HTTP_USER_AGENT} "iphone|android|phone|mobile|wap|netfront|opera mobi|opera mini|iemobile|samsung|nokia|sonyericsson|blackberry|ucweb|windows ce|symbian|series60|series40|ipad" [NC]
# 如果访问的是主域名,则重定向到手机域名
RewriteCond %{HTTP_HOST} !^m\.yourdomain\.com [NC]
RewriteRule ^(.*)$ http://m.yourdomain.com/$1 [L,R=301]
</IfModule>
# ====================== 手机域名重定向结束 ======================
配置说明:
RewriteCond:设置重定向的条件。- 第一行:检查
HTTP_USER_AGENT是否包含移动设备关键词,[NC]表示不区分大小写。 - 第二行:检查主机名
HTTP_HOST是否不等于m.yourdomain.com,[NC]也是不区分大小写,这个条件很重要,防止死循环。
- 第一行:检查
RewriteRule:满足条件后执行的规则。^(.*)$:匹配所有 URL 路径。http://m.yourdomain.com/$1:跳转到手机域名,并保留原始路径。[L,R=301]:L表示如果匹配到此规则,则停止后续的 Rewrite 规则;R=301表示执行 301 重定向。
总结与注意事项
-
选择哪种方法?
- 通用性首选:PHP 方法,如果你不确定服务器环境,或者没有服务器管理权限,用 PHP 代码最稳妥。
- 性能最佳:Nginx/Apache 配置,如果你有服务器管理权限,推荐使用服务器配置,因为它在请求处理的早期阶段就完成了重定向,效率更高。
-
死循环问题:无论用哪种方法,一定要确保访问手机域名时不会再次触发重定向,上面的代码中都通过判断
$host或当前域名是否为手机域名来避免了这个问题。 -
SEO 考虑:务必使用 301 (永久重定向),而不是 302 (临时重定向),这有助于搜索引擎将移动域名的权重正确传递,避免内容重复的问题。
-
内容同步:主站和手机站的内容需要保持同步,你可以手动同步,也可以通过开发接口等方式实现自动化同步,DedeCMS 本身没有内置的移动站同步功能,需要自行开发或借助第三方插件。
-
测试:配置完成后,务必使用手机或浏览器的“开发者工具”模拟手机设备进行测试,确保跳转正常,同时也要用 PC 访问,确保不会误跳转。
按照以上步骤操作,你就可以成功为你的 DedeCMS 网站绑定手机域名了。
