- 配置服务器 (Nginx/Apache):让服务器知道手机域名的请求应该指向哪个网站目录。
- 修改 DedeCMS 配置:告诉 DedeCMS 系统使用哪个模板目录来渲染手机页面。
- 修改模板文件:确保手机模板文件存在,并且路径正确。
第一步:服务器环境配置
你需要根据你的服务器环境(Nginx 或 Apache)来选择对应的配置方法。
使用 Nginx 服务器 (推荐)
Nginx 的配置更灵活,通常使用 rewrite 规则来实现,假设你的主域名是 www.example.com,手机域名是 m.example.com。
-
登录你的服务器,找到 Nginx 的配置文件,通常位于
/etc/nginx/sites-available/目录下,找到你对应站点的配置文件(example.com)。 -
编辑配置文件,在
server块中添加如下server块,这个新的server块专门用来处理m.example.com的请求,并将其重写到主站点的根目录,同时设置一个变量来标识这是手机访问。
# 在原有的 server 块之前或之后,添加一个新的 server 块
server {
listen 80;
server_name m.example.com; # 你的手机域名
# 将所有请求重写到主站点根目录,并设置 HTTP 头
rewrite ^(.*)$ https://www.example.com$1 last;
# 或者如果你想直接代理到主站点的目录,可以这样写(更推荐):
# rewrite ^(.*)$ /$1 last; # 将请求重写到当前目录的相同路径
# set $mobile "1"; # 设置一个变量,DedeCMS 会用到
# 确保指向你网站的根目录,和主站点一样
root /var/www/html/example.com; # 替换成你的网站根目录
index index.php index.html;
# 其他 location 配置(如处理 .php 文件)可以和主站点共用或复制过来
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 根据你的 PHP 版本修改
}
}
更简洁的写法(推荐):
这种方式更简单,直接将手机域名指向主站点的物理目录,然后由 DedeCMS 的 PHP 代码来处理判断。
server {
listen 80;
server_name m.example.com;
# 直接指向主站的根目录
root /var/www/html/example.com;
index index.php index.html;
location / {
# 这里不做 rewrite,让 PHP 去处理
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
}
- 保存配置文件,然后检查 Nginx 配置是否正确:
nginx -t
如果显示
syntax is ok和test is successful,则执行以下命令重新加载 Nginx:systemctl reload nginx
使用 Apache 服务器
Apache 的配置通常使用 .htaccess 文件,非常方便。
-
登录你的服务器,进入你网站根目录,找到
.htaccess文件。 -
编辑
.htaccess文件,在文件顶部添加以下规则,这段代码会检测HTTP_HOST是否为你的手机域名,如果是,则设置一个环境变量HTTP_MOBILE为1。
# 在 RewriteEngine On 下面添加
# 检测是否是手机域名访问
RewriteCond %{HTTP_HOST} ^m\.example\.com [NC]
RewriteRule .* - [E=HTTP_MOBILE:1]
- 保存
.htaccess文件,Apache 通常会自动加载,无需重启。
第二步:修改 DedeCMS 后台配置
现在服务器已经知道手机域名的请求了,接下来告诉 DedeCMS 系统如何响应。
-
登录 DedeCMS 后台 (
www.example.com/dede/)。 -
进入 系统 -> 系统基本参数 -> 核心设置。
-
找到以下几个关键选项并进行修改:
-
手机版网址:
- 选项:
cfg_mobileurl - 操作:修改它的值为你的手机域名,
http://m.example.com。 - 作用:用于生成手机站链接时使用。
- 选项:
-
是否开启手机站:
- 选项:
cfg_mobile_site - 操作:选择 “是”。
- 作用:这是开启手机站功能的总开关。
- 选项:
-
手机模板目录:
- 选项:
cfg_mobile_dir - 操作:保持默认值 或者你的手机模板所在的目录,
/m。 - 重要:这个值指向的是你手机模板文件在服务器上的相对路径,如果你的手机模板文件在
/templets/mobile/目录下,这里就填/mobile。
- 选项:
-
手机网站首页文件名:
- 选项:
cfg_mobile_index - 操作:保持默认
index.htm。 - 作用:手机站生成首页后的文件名。
- 选项:
-
-
点击“保存更改”。
第三步:检查和生成手机站模板
确保你的手机站模板已经准备好。
-
模板目录:
- 默认情况下,DedeCMS 的手机模板位于
/templets/default/目录下,如果你使用了新的模板,请确保它们被放置在正确的目录(你在cfg_mobile_dir中设置的目录)。
- 默认情况下,DedeCMS 的手机模板位于
-
首页模板:
- 确保手机模板目录下有一个
index.htm文件,这是手机站的首页模板。
- 确保手机模板目录下有一个
-
生成首页:
- 进入 DedeCMS 后台的 生成 -> 主页生成。
- 你会看到多了一个选项卡 “仅动态主页” 和 “更新主页HTML”,选择 “更新主页HTML”,然后点击“生成”按钮。
- 这一步会根据你刚才配置的手机模板,在网站根目录下生成
index.html文件(文件名由cfg_mobile_index决定)。
-
检查栏目和文章页:
- 进入 频道管理,编辑每个栏目,在“栏目选项”中设置“列表模板”、“文章列表模板”和“文章内容模板”为对应的手机模板文件(
list_mobile.htm,article_mobile.htm)。 - 为每个栏目生成一次HTML,确保手机端的栏目和文章页也能正常访问。
- 进入 频道管理,编辑每个栏目,在“栏目选项”中设置“列表模板”、“文章列表模板”和“文章内容模板”为对应的手机模板文件(
第四步:最终测试
完成以上所有步骤后,进行最终测试。
- 清除浏览器缓存 或使用无痕模式。
- 在电脑浏览器地址栏输入你的手机域名
http://m.example.com,看看是否能正确显示手机站首页。 - 使用手机访问
http://m.example.com,确认显示正常。 - 点击手机站上的栏目链接和文章链接,检查是否能跳转到对应的手机页面。
常见问题排查
-
问题:访问手机域名,显示的是电脑站首页。
- 原因:可能是服务器配置错误,或者 DedeCMS 后台的
cfg_mobile_site没有开启。 - 解决:检查 Nginx/Apache 配置,确保请求被正确处理,检查后台参数设置。
- 原因:可能是服务器配置错误,或者 DedeCMS 后台的
-
问题:访问手机域名,显示 404 Not Found。
- 原因:服务器配置的
root目录不正确,或者index文件不存在。 - 解决:检查服务器配置文件中的网站根目录路径是否正确,确保你已经生成了手机站首页
index.html。
- 原因:服务器配置的
-
问题:手机站样式错乱,图片路径不正确。
- 原因:模板文件中的静态资源(CSS, JS, 图片)路径使用了绝对路径 ,导致指向了主域名。
- 解决:在手机模板中,将所有静态资源的路径修改为相对路径 或使用
{dede:global.cfg_cmsurl/}标签来动态获取CMS路径。
通过以上四个步骤,你就可以成功地为你的 DedeCMS 站点绑定一个独立的手机域名了。
