dede sitemap绝对路径

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

默认情况下,DedeCMS 生成的 Sitemap(网站地图)文件中的链接是相对路径(about.html),这对于搜索引擎(如 Google、百度)的抓取来说是不友好的,因为它们需要完整的 https://www.yourdomain.com/about.html 这样的绝对路径才能正确识别和收录。

dede sitemap绝对路径
(图片来源网络,侵删)

下面我将提供两种最常用且有效的方法,确保您能成功设置。


修改 sitemap.php 源码(最推荐、最彻底)

这是最直接、最稳定的方法,通过修改 DedeCMS 核心生成 Sitemap 的文件,让它在生成时就带上网站的域名。

操作步骤:

  1. 找到文件 登录您的网站 FTP 或主机控制面板,找到并下载以下文件: 你的网站根目录/plus/sitemap.php

    dede sitemap绝对路径
    (图片来源网络,侵删)
  2. 编辑文件 用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开 sitemap.php 文件。

  3. 修改代码 在文件中找到定义网站基本信息的代码段,通常在文件的开头部分,类似这样:

    // ... 其他代码 ...
    $type = isset($type) ? trim($type) : '';
    $typeid = isset($typeid) ? intval($typeid) : 0;
    $siteurl = $cfg_basehost; // 这里是获取网站根目录的变量
    // ... 其他代码 ...

    您需要确保 $cfg_basehost 变量包含了完整的 http://https://,有时候这个变量可能没有包含协议,或者为空,我们可以手动给它赋值,以确保万无一失。

    找到类似下面这行代码:

    dede sitemap绝对路径
    (图片来源网络,侵删)
    $siteurl = $cfg_basehost;

    将其修改为(推荐写死域名,避免因配置问题出错):

    // 将你的域名替换成你自己的,确保包含 https://
    $siteurl = 'https://www.yourdomain.com/'; 

    或者,如果不想写死,也可以使用以下更健壮的方式:

    // 获取当前网站的协议和域名,自动适应 http 和 https
    $siteurl = 'http://'. $_SERVER['HTTP_HOST'] . '/';
    // 如果网站强制使用 HTTPS,可以强制设置
    // $siteurl = 'https://'. $_SERVER['HTTP_HOST'] . '/';
  4. 保存并上传 修改完成后,保存文件,然后通过 FTP 将其上传回原来的位置,覆盖原文件。

  5. 重新生成 Sitemap 登录 DedeCMS 后台,进入“栏目管理” -> “自动栏目”,在页面底部找到“更新Sitemap”按钮,点击它重新生成 Sitemap 文件。

新生成的 sitemap.xml 文件中的所有链接都会是完整的绝对路径了。


使用 Nginx/Apache 的 rewrite 规则(优雅的解决方案)

如果您不想修改 DedeCMS 的源码,或者希望保持源码的纯净,可以使用 Web 服务器(Nginx 或 Apache)的重写规则,将相对路径的 Sitemap 动态地转换为绝对路径。

原理: 当搜索引擎请求 sitemap.xml 时,Web 服务器在输出内容前,将文件中的所有 开头的相对路径替换成您的完整域名。

针对 Nginx 服务器

  1. 找到配置文件 编辑您网站的 Nginx 配置文件,通常位于 /etc/nginx/nginx.conf 或站点配置文件 /etc/nginx/sites-available/yourdomain.com

  2. 添加 sub_filter 指令server 块中添加以下配置:

    server {
        listen 80;
        server_name www.yourdomain.com;
        root /path/to/your/website;
        # ... 其他配置 ...
        # 添加这段配置来处理 sitemap.xml
        location = /sitemap.xml {
            # 将请求代理给 PHP 处理
            fastcgi_pass   unix:/var/run/php/php8.1-fpm.sock; # 请根据您的PHP-FPM配置修改
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
            # 使用 sub_filter 进行内容替换
            sub_filter 'href="/' 'href="https://www.yourdomain.com/'; # 替换为你的域名
            sub_filter 'url="/' 'url="https://www.yourdomain.com/';   # 替换为你的域名
            sub_filter_once off; # 对所有匹配项都进行替换
        }
        # ... 其他配置 ...
    }
  3. 重启 Nginx 保存配置文件后,执行以下命令重启 Nginx 使配置生效:

    sudo systemctl restart nginx

针对 Apache 服务器

  1. 创建或编辑 .htaccess 文件 在您的网站根目录下找到 .htaccess 文件,如果不存在就创建一个。

  2. 添加 mod_proxy_htmlmod_substitute 规则 确保您的 Apache 已经加载了 mod_proxy_htmlmod_substitute 模块,然后在 .htaccess 文件中添加以下规则:

    # 启用必要的模块
    <IfModule mod_proxy_html.c>
        <IfModule mod_substitute.c>
            # 将针对 sitemap.xml 的请求交给 PHP 处理
            RewriteEngine On
            RewriteRule ^sitemap\.xml$ /plus/sitemap.php [L]
            # 使用 Substitute 模块进行内容替换
            # 需要开启 mod_proxy_html 和 mod_substitute
            # 这部分配置可能更复杂,通常建议使用方法一或Nginx方案
            # 以下是一个示例,可能需要根据实际情况调整
            <Files "sitemap.xml">
                ProxyPass !
                # 这是一个简化的思路,实际操作中可能需要更复杂的规则或借助PHP处理
                # 对于Apache,方法一通常是更简单可靠的选择
            </Files>
        </IfModule>
    </IfModule>

    注意:Apache 的 mod_substitute 模块在处理这类替换时不如 Nginx 的 sub_filter 灵活和直接,对于 Apache 环境,强烈推荐使用方法一(修改源码),它更简单、更可靠。


总结与建议

方法 优点 缺点 推荐度
修改 sitemap.php 简单直接、效果稳定、不依赖服务器配置 需要修改核心文件,升级时可能需要重复修改 ★★★★★ (最推荐)
服务器重写 不修改源码,保持系统纯净 配置复杂,对服务器环境有要求,可能不稳定 ★★★☆☆ (适合熟悉服务器配置的用户)

最终建议:

对于绝大多数用户来说,方法一(修改 sitemap.php)是最佳选择,它一次性解决问题,且非常可靠,您只需要记住,在未来如果升级 DedeCMS,这个修改可能会被覆盖,届时您需要重新进行一次修改。

修改完成后,务必重新生成 Sitemap,然后使用 Google Search Console 或百度站长工具提交您的 Sitemap,并检查一下文件内容,确认链接都已变成绝对路径。

-- 展开阅读全文 --
头像
织梦list如何通过typeid调用指定栏目?
« 上一篇 2025-12-23
c语言 createwindow
下一篇 » 2025-12-23

相关文章

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

目录[+]