如何去掉织梦首页的index.html?

99ANYc3cd6
预计阅读时长 13 分钟
位置: 首页 织梦建站 正文

核心原理

织梦CMS默认在生成静态页面时,会在URL后面加上 index.html,你的网站首页是 www.yourdomain.com,但织梦生成的静态文件路径是 www.yourdomain.com/index.html

织梦首页去index.html
(图片来源网络,侵删)

要去掉它,本质上是做两件事:

  1. 服务器层面:让服务器在访问 www.yourdomain.com/ 时,自动去寻找并返回 www.yourdomain.com/index.html 文件。
  2. 织梦系统层面:确保织梦生成的所有链接(如导航栏、友情链接等)都去掉 index.html

修改织梦核心文件(最推荐、最彻底)

这是最根本、最彻底的方法,能确保所有由织梦系统生成的链接都符合你的要求。

操作步骤:

  1. 找到并打开文件 使用FTP工具或服务器的文件管理器,登录你的网站根目录,找到并打开以下文件: /include/helpers/extend.helper.php

    织梦首页去index.html
    (图片来源网络,侵删)
  2. 定位并修改代码 在该文件中,搜索 GetMkUrl() 函数,你会找到类似下面这样的代码:

    if($isrule == 1)
    {
        $reurl = $GLOBALS['cfg_basehost'].$row['arcurl'];
    }
    else
    {
        $reurl = $GLOBALS['cfg_basehost'].$row['typedir'].'/'.$row['filename'].$GLOBALS['cfg_phpurl'].'/index.php?arcid='.$row['id'];
    }
    return $reurl;

    注意: 不同版本的织梦,代码行号或变量名可能略有不同,但核心逻辑是一样的。

  3. 进行修改 将上面的代码修改为:

    if($isrule == 1)
    {
        // 如果是静态规则,直接返回原URL,无需处理
        $reurl = $GLOBALS['cfg_basehost'].$row['arcurl'];
    }
    else
    {
        // 如果不是静态规则,需要将 'index.php?arcid=' 替换为 '?arcid='
        // 这一步主要是为了动态URL,但我们主要关注静态URL的生成
        $reurl = $GLOBALS['cfg_basehost'].$row['typedir'].'/'.$row['filename'].$GLOBALS['cfg_phpurl'].'?arcid='.$row['id'];
    }
    return $reurl;

    关键点: 这个修改主要是为了确保在非伪静态模式下,生成的动态链接也不会有多余的 index.php,对于静态链接,这个文件主要影响的是动态内容的链接生成。

    织梦首页去index.html
    (图片来源网络,侵删)
  4. (可选但推荐)修改 channel.unit.php 导航栏等频道页的链接也可能包含 index.html,你可以打开 /include/typelink.class.php 文件,搜索并修改 GetOneTypeLink() 函数中关于首页链接的部分,确保它返回的链接不带 index.html,但通常第一步已经足够。

  5. 重新生成网站 登录织梦后台,进入【生成】->【更新主页HTML】,点击“更新主页HTML”,让织梦根据新的规则重新生成你的首页文件。

完成以上步骤后,织梦在生成新的链接时,就不会再自动添加 index.html 了。


使用服务器伪静态规则(推荐配合方法一)

这个方法主要是解决服务器访问问题,确保用户访问 www.yourdomain.com/ 时能正确显示首页内容。强烈建议此方法与方法一配合使用,以达到最佳效果。

对于 Apache 服务器

  1. 确保你的服务器开启了 mod_rewrite 模块。

  2. 在网站根目录下创建或编辑一个名为 .htaccess 的文件。

  3. 将以下代码添加到 .htaccess 文件中:

    <IfModule mod_rewrite.c>
      RewriteEngine On
      # 将根目录的请求重定向到 index.html
      RewriteRule ^$ /index.html [L]
      # 其他伪静态规则...
    </IfModule>

    说明: 这条规则的意思是,当访问根目录()时,服务器会内部重定向到 /index.html 文件,但用户浏览器地址栏不会改变。

对于 Nginx 服务器

  1. 编辑你的 Nginx 配置文件,通常位于 /etc/nginx/nginx.conf 或你网站配置文件中(如 /etc/nginx/sites-available/yourdomain)。

  2. server 块中添加以下代码:

    server {
        listen 80;
        server_name www.yourdomain.com;
        root /path/to/your/website;
        # ... 其他配置 ...
        # 将根目录的请求重定向到 index.html
        location = / {
            try_files $uri $uri/ /index.html;
        }
        # ... 其他配置 ...
    }

    说明: try_files 指令会按顺序尝试查找文件,当访问 时,它会先找 $uri(即 ,不存在),再找 $uri/(即 /index.html,如果存在则返回),如果还不存在,最后会返回 /index.html

  3. 保存配置文件后,执行 nginx -s reload 命令重新加载 Nginx 配置。


修改模板文件(临时或特定场景)

如果你只是想修改首页本身的链接,而不想影响整个系统,可以修改模板文件。

  1. 找到首页模板 登录织梦后台,进入【模板】->【默认模板管理】,找到你正在使用的首页模板文件(通常是 index.htm)。

  2. 修改Logo或首页链接 检查模板中所有指向首页的链接,例如Logo的 <a> 标签或导航栏的“首页”链接。

    • 修改前:
      <a href="{dede:global.cfg_basehost/}/index.html">
    • 修改后:
      <a href="{dede:global.cfg_basehost/}/">

    缺点:

    • 这种方法只修改了模板中硬编码的链接,无法保证系统动态生成的链接(如友情链接、栏目链接等)会自动去掉 index.html
    • 每次更新模板后,都需要再次检查和修改。

总结与推荐流程

为了达到最理想、最稳定的效果,建议按以下顺序操作:

  1. 【首选】修改核心文件:按照 方法一 的步骤,修改 /include/helpers/extend.helper.php 文件,这是治本之策。
  2. 【配合】配置服务器伪静态:根据你的服务器类型(Apache 或 Nginx),按照 方法二 的配置,设置 .htaccess 或 Nginx 配置文件,这是确保用户访问体验正确的关键。
  3. 【生成】更新网站:登录织梦后台,重新生成首页和所有相关页面,使新规则生效。
  4. 【检查】验证结果:清空浏览器缓存,访问你的网站首页,检查源代码中的所有链接,确认 index.html 都已去除。

通过以上组合拳,你就可以彻底、干净地去除织梦首页的 index.html 了。

-- 展开阅读全文 --
头像
Android app能用C语言开发吗?
« 上一篇 2025-12-16
dede为何无法生成index.php?
下一篇 » 2025-12-16
取消
微信二维码
支付宝二维码

目录[+]