dede目录绑定域名具体操作步骤是怎样的?

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

核心原理

目录绑定域名的核心原理是服务器级别的配置,而不是DedeCMS本身的设置,你需要告诉Web服务器(如Apache或Nginx),当访问特定的子域名(如 news.yourdomain.com)时,就去访问网站根目录下的某个子目录(如 /news/)。

dede目录绑定域名
(图片来源网络,侵删)

DedeCMS的角色是:

  1. 发布到指定的目录(如 /news/)。
  2. 处理链接:确保其内部链接(文章链接、图片链接等)都指向绑定的域名。

整个过程分为两大步:

  1. 服务器配置:让服务器实现“域名指向目录”。
  2. DedeCMS配置:让DedeCMS生成正确的链接。

第一步:服务器配置(关键步骤)

你需要根据你的Web服务器类型(Apache或Nginx)来选择相应的配置方法。

方案A:使用 Apache 服务器

Apache实现这个功能最常用和最推荐的方法是使用 mod_rewrite 模块和 VirtualHost(虚拟主机)。

dede目录绑定域名
(图片来源网络,侵删)

确保mod_rewrite模块已启用 大多数虚拟主机环境都已默认开启,如果你是自己搭建的服务器,请确保在 httpd.conf 中有下面这行并且没有被注释:

LoadModule rewrite_module modules/mod_rewrite.so

创建或编辑虚拟主机配置文件 假设你的主域名是 yourdomain.com,你想将 news.yourdomain.com 绑定到 /news/ 目录。

打开你的虚拟主机配置文件(通常是 httpd-vhosts.conf 或在 /etc/apache2/sites-available/ 下的文件),添加或修改如下配置:

# 主域名 yourdomain.com 的配置
<VirtualHost *:80>
    ServerName yourdomain.com
    ServerAlias www.yourdomain.com
    DocumentRoot /path/to/your/website/root # 你的网站根目录
    <Directory "/path/to/your/website/root">
        Options Indexes FollowSymLinks
        AllowOverride All # 这非常重要,允许目录下的.htaccess文件生效
        Require all granted
    </Directory>
</VirtualHost>
# 子域名 news.yourdomain.com 的配置
<VirtualHost *:80>
    ServerName news.yourdomain.com
    DocumentRoot /path/to/your/website/root/news # 直接指向子目录
    <Directory "/path/to/your/website/root/news">
        Options Indexes FollowSymLinks
        AllowOverride All # 同样重要
        Require all granted
    </Directory>
</VirtualHost>

创建或修改 .htaccess 文件 在你的 网站根目录绑定的子目录(如 /news/)下,都需要确保有一个正确配置的 .htaccess 文件。

网站根目录下的 .htaccess 文件: 这个文件主要处理主站点的URL重写。

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  # 绑定目录到子域名后,需要将主站点的请求重定向到主域名
  # 访问 yourdomain.com/news/ 会被重定向到 news.yourdomain.com
  RewriteCond %{HTTP_HOST} ^yourdomain.com [NC]
  RewriteCond %{REQUEST_URI} ^/news/
  RewriteRule ^news/(.*)$ http://news.yourdomain.com/$1 [L,R=301]
  # 绑定目录到子域名后,需要将子域名的请求重写到对应的目录
  # 这是核心规则,将 news.yourdomain.com 的请求指向 /news/ 目录
  RewriteCond %{HTTP_HOST} ^news.yourdomain.com [NC]
  RewriteRule ^(.*)$ /news/$1 [L]
  # DedeCMS 默认的伪静态规则
  # 如果你的网站根目录绑定了域名,这个规则保持不变
  RewriteRule ^index\.php$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.php [L]
</IfModule>

子目录(如 /news/)下的 .htaccess 文件: 这个文件主要用于处理该子目录下的URL重写,并确保DedeCMS的规则能正常工作。

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /news/
  # DedeCMS 在子目录下的伪静态规则
  # 注意 RewriteBase 指向了 /news/
  RewriteRule ^index\.php$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /news/index.php [L]
</IfModule>

重启Apache服务器 保存配置文件后,重启Apache使配置生效。

sudo systemctl restart apache2
# 或者
sudo service httpd restart

方案B:使用 Nginx 服务器

Nginx的配置方式与Apache不同,它不依赖.htaccess文件,所有规则都在配置文件中定义。

编辑Nginx配置文件 打开你的Nginx配置文件(通常是 nginx.conf 或在 /etc/nginx/sites-available/ 下的文件)。

# 主域名 yourdomain.com 的配置
server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    root /path/to/your/website/root; # 网站根目录
    index index.php index.html;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    # ... 其他关于PHP处理的配置 ...
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000; # 或你的PHP-FPM地址
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
# 子域名 news.yourdomain.com 的配置
server {
    listen 80;
    server_name news.yourdomain.com;
    root /path/to/your/website/root/news; # 直接指向子目录
    index index.php index.html;
    # 核心规则:将请求重写到子目录
    # 访问 news.yourdomain.com/article/1.html 实际是访问 /news/article/1.html
    rewrite ^/(.*)$ /news/$1 last;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    # ... PHP处理配置 ...
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

重启Nginx服务器

sudo systemctl restart nginx

第二步:DedeCMS后台配置

服务器配置完成后,你需要告诉DedeCMS你的新域名,以便它生成正确的链接。

添加新站点 登录DedeCMS后台,进入【系统】-> 【SQL命令行工具】

在命令行中执行以下SQL语句,将你的新子域名添加到数据库中,这个表存储了网站的所有域名信息。

INSERT INTO `dede_multisites` (`sites`, `sitepath`, `typename`) VALUES ('news.yourdomain.com', '/news/', '新闻站点');
  • sites: 你的子域名。
  • sitepath: 该域名对应的相对网站根目录的路径/news/
  • typename: 站点名称,方便识别。

修改站点默认域名 这一步非常重要,否则DedeCMS生成的链接可能还是主域名。

进入【系统】-> 【系统基本参数】 -> 【核心设置】

找到 “cfg_multi_site” 这一项,将其值修改为你的子域名。

  • 原始值可能是http://www.yourdomain.com
  • 修改为http://news.yourdomain.com

修改栏目和文章的链接 进入【核心】-> 【频道模型】 -> 【栏目管理】

找到你发布到 news 频道的那个顶级栏目,点击后面的“修改”。

在修改页面的“高级选项”中,找到“站点栏目”或类似字段,确保它选择的是你刚刚添加的 news.yourdomain.com 站点。

对于已经发布的文章,它们的链接可能不会自动更新,你可以通过以下方式批量更新:

  • 重新生成栏目页和文章页:进入【生成】-> 【一键更新网站】,选择“更新所有栏目HTML”和“更新所有文档HTML”。
  • SQL批量更新:如果文章数量巨大,可以在SQL命令行工具中执行更新文章URL的语句(需要一定的SQL技巧)。

常见问题与注意事项

  1. 伪静态规则冲突:确保服务器配置和.htaccess文件中的伪静态规则没有冲突,特别是RewriteBase的设置。
  2. 图片和资源路径错误:这是最常见的问题,如果DedeCMS没有正确配置,文章中的图片路径可能还是指向主域名,确保在【系统参数】->【核心设置】中,cfg_multi_site 设置正确,并且重新生成页面。
  3. SSL证书(HTTPS):如果你的网站启用了HTTPS,你需要为每个绑定的子域名都申请并安装SSL证书,并修改服务器配置为 443 端口,将 http 重定向到 https
  4. 虚拟主机限制:一些廉价的虚拟主机可能不支持多域名绑定或自定义虚拟主机配置,如果按照上述步骤操作失败,请咨询你的主机服务商。
  5. 测试:完成所有配置后,务必清除浏览器缓存,并使用 ping 命令或在线工具检查域名是否正确解析到服务器的IP地址。

成功的关键在于服务器配置DedeCMS后台的站点与域名设置必须保持一致,先搞定服务器,再配置DedeCMS,问题基本都能解决。

-- 展开阅读全文 --
头像
C语言转向C++开发,核心差异与关键点是什么?
« 上一篇 04-24
c 语言继承了c语言
下一篇 » 04-24

相关文章

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

目录[+]