dede如何正确部署到子目录?

99ANYc3cd6
预计阅读时长 16 分钟
位置: 首页 DEDE建站 正文
  1. 移动文件和修改配置:将网站文件移动到新位置,并修改核心配置文件以指向新路径。
  2. 服务器配置(伪静态规则):修改服务器的伪静态规则,让子目录的链接也能被正确解析。

下面我将为你提供一份详细、分步的图文指南(以 Nginx 和 Apache 服务器为例)。

dede 放到子目录
(图片来源网络,侵删)

第一步:移动文件与修改配置

备份!备份!备份!

在进行任何操作之前,请务必备份你的整个网站文件和数据库,这是防止操作失误导致网站崩溃的唯一有效方法。

  • 文件备份:通过 FTP 或 SSH 将你网站根目录下的所有文件下载到本地。
  • 数据库备份:登录你的 DedeCMS 后台,在“系统” -> “数据库备份/恢复”中,创建一个新的数据库备份文件并下载。

创建子目录并通过 FTP 上传文件

  • 登录你的服务器(通过 FTP 或 SSH),在网站根目录下创建一个新的子目录,dedecms
    • 你的网站根目录路径通常是 /wwwroot/home/wwwroot/ 等。
    • 创建后,路径就变成了 /wwwroot/dedecms
  • 将你之前备份的 DedeCMS 网站所有文件(除了 data 目录下的 common.inc.php,这个文件我们后面会手动处理),全部上传到这个新的 dedecms 子目录中。

修改核心配置文件 common.inc.php

这是最关键的一步,我们需要告诉 DedeCMS 它的新位置在哪里。

  • 通过 FTP 找到并下载 /wwwroot/dedecms/data/common.inc.php 文件。

  • 用文本编辑器(如 VS Code, Sublime Text, Notepad++)打开它。

    dede 放到子目录
    (图片来源网络,侵删)
  • 找到下面这行代码:

    define('DEDEROOT', __ROOT__);
  • 将它修改为指向你的子目录。__ROOT__ 是一个魔术变量,代表网站根目录,我们只需要把它的值改成你的子目录名即可。

    // 修改前
    // define('DEDEROOT', __ROOT__);
    // 修改后 (如果你的子目录是 'dedecms')
    define('DEDEROOT', __ROOT__.'/dedecms');
    • 注意:这里的 __ROOT__ 在不同服务器环境下可能代表 或 /你的域名/,但通常直接使用 __ROOT__.'/子目录名' 是最稳妥的方式。

修改后台目录配置(可选但推荐)

DedeCMS 默认的后台目录是 /dede,如果你的后台目录没有修改过,可以跳过这一步,如果你曾经修改过后台目录名(比如改成了 /admin),为了后续操作方便,最好先把它改回默认的 /dede,等所有操作完成后再改回来。


第二步:配置服务器伪静态规则

这一步的目的是为了让服务器能够正确识别并解析 DedeCMS 的 URL 链接,/a/1.html,如果不做这一步,访问子目录下的文章或栏目页面时,就会出现 404 错误。

你需要根据你的服务器类型(Nginx 或 Apache)来选择对应的操作。

如果你的服务器是 Nginx

  1. 登录你的 Nginx 服务器,找到网站的配置文件,通常位于 /usr/local/nginx/conf/vhost/ 目录下,文件名是你的域名,yourdomain.com.conf

  2. server 块内,找到 location / { ... } 的配置段。

  3. location / { ... }try_files 语句之前,插入以下 DedeCMS 的伪静态规则。

    # 在 location / { ... } 内部添加
    location / {
        # ... 其他配置 ...
        # 添加下面的 DedeCMS 伪静态规则
        rewrite "^/a([^\.]*).html$" /dedecms/a/$1.html last;
        rewrite "^/list-([0-9]+)\.html$" /dedecms/list.php?tid=$1 last;
        rewrite "^/list-([0-9]+)-([0-9]+)-([0-9]+)\.html$" /dedecms/list.php?tid=$1&totalresult=$2&PageNo=$3 last;
        rewrite "^/view-([0-9]+)-([0-9]+)\.html$" /dedecms/view.php?aid=$1&cid=$2 last;
        # 如果你的网站根目录下还有其他程序,请确保它们的规则在 DedeCMS 规则之前
        # WordPress
        # if (!-e $request_filename) {
        #     rewrite . /index.php last;
        # }
        try_files $uri $uri/ /index.php?$args;
    }
    • 注意:规则中的 /dedecms 要和你创建的子目录名保持一致。
  4. 保存配置文件,然后执行命令重新加载 Nginx 配置使其生效:

    nginx -s reload

如果你的服务器是 Apache

  1. 登录你的 Apache 服务器,找到网站根目录下的 .htaccess 文件,如果不存在,就创建一个。

  2. 打开 .htaccess 文件,确保里面包含 DedeCMS 的伪静态规则,如果没有,就添加以下内容:

    <IfModule mod_rewrite.c>
      RewriteEngine On
      # 将 RewriteBase 后面的 / 改为你的子目录名 /dedecms
      RewriteBase /dedecms
      RewriteRule ^a/([a-z0-9\-]+)\.html$ a/$1.html
      RewriteRule ^list-([0-9]+)\.html$ list.php?tid=$1
      RewriteRule ^list-([0-9]+)-([0-9]+)-([0-9]+)\.html$ list.php?tid=$1&totalresult=$2&PageNo=$3
      RewriteRule ^view-([0-9]+)-([0-9]+)\.html$ view.php?aid=$1&cid=$2
    </IfModule>
    • 关键点RewriteBase /dedecms 这一行,/dedecms 必须和你的子目录名完全一致。
  3. 确保 Apache 的 mod_rewrite 模块已经启用,通常虚拟主机商会默认开启,如果你自己管理服务器,可以检查一下。


第三步:清理缓存与测试

  1. 清理缓存

    • 登录你的 DedeCMS 后台(地址现在是 http://你的域名/dedecms/dede/)。
    • 进入“系统” -> “系统基本参数” -> “性能选项”。
    • 将“网站HTML缓存”设置为“否”,然后点击“保存”。
    • 进入“系统” -> “SQL命令工具”,执行以下命令来清理所有缓存:
      DELETE FROM `dede_arccache`;
      DELETE FROM `dede_homecache`;
    • (可选)如果开启了全站生成静态,可以在“生成” -> “一键更新网站”中重新生成一下首页和栏目。
  2. 测试

    • 前台:访问 http://你的域名/dedecms/,看网站首页是否正常显示。
    • 文章/栏目页:点击一个文章链接或栏目链接,看是否能正常打开,会不会出现 404 错误。
    • 后台:访问 http://你的域名/dedecms/dede/,输入用户名密码,看是否能成功登录后台。

如果以上所有步骤都正确无误,你的 DedeCMS 网站就已经成功移动到子目录了。


常见问题与解决方法

  • Q: 移动后,后台登录提示“验证码错误”?

    • A: 这是因为 data 目录的权限问题,请确保 data 目录及其下所有文件的权限设置正确,Linux 下设置为 755(目录)和 644(文件)即可,可以通过 FTP 客户器右键修改属性。
  • Q: 前台首页能打开,但文章页 404?

    • A: 99% 的原因是服务器伪静态规则没有配置正确或没有生效,请仔细检查 Nginx 或 Apache 的配置,确保规则中的子目录名与实际创建的一致,并确保服务器已重新加载了配置。
  • Q: 网站样式和图片加载不出来?

    • A: 检查 CSS 和图片的引用路径,如果它们是绝对路径(如 /images/1.jpg),在子目录下就会变成 /dedecms/images/1.jpg,这通常是正确的,如果路径有问题,可能是 DedeCMS 的“站点设置”里的“站点根网址”没有自动更新,可以手动检查并修正。
  • Q: 如果我想把子目录变回根目录怎么办?

    • A: 按照上述步骤反向操作即可:1. 将文件移回根目录;2. 将 common.inc.php 中的 define('DEDEROOT', __ROOT__.'/dedecms'); 改回 define('DEDEROOT', __ROOT__);;3. 将服务器伪静态规则中的 /dedecms 前缀去掉;4. 清理缓存。
-- 展开阅读全文 --
头像
织梦如何调用二级栏目名称?
« 上一篇 今天
dede分页省略号如何实现或优化?
下一篇 » 今天

相关文章

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

目录[+]