织梦栏目如何去掉html后缀?

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

后台设置(推荐首选)

这是最简单的方法,适用于大多数情况,织梦CMS本身就提供了这个选项。

织梦网站栏目不带html的后缀
(图片来源网络,侵删)
  1. 登录织梦后台:使用您的管理员账号登录网站的后台管理系统。
  2. 进入核心设置:在左侧菜单栏中,找到并点击 「系统」 -> 「系统基本参数」
  3. 修改栏目选项
    • 在右侧的参数设置列表中,找到 「核心设置」 这一项。
    • 找到名为 「栏目默认页的名称」 的选项。
    • 将其默认值 index.html 修改为 index
    • 点击页面底部的 「保存」 按钮。

完成这一步后,所有顶级栏目的链接后缀都会被自动去掉。

  • 修改前:https://www.yourdomain.com/about/index.html
  • 修改后:https://www.yourdomain.com/about/

注意:这个设置通常只对顶级栏目有效,对于二级、三级等子栏目,可能还需要配合下面的方法二。


修改核心文件(适用于子栏目和特殊情况)

如果后台设置后,子栏目仍然带有 .html 后缀,或者您希望所有层级的栏目都不带后缀,就需要修改织梦的核心程序文件。

⚠️ 重要提醒:

织梦网站栏目不带html的后缀
(图片来源网络,侵删)
  • 备份!备份!备份! 在修改任何核心文件之前,请务必备份您的网站文件和数据库,以防操作失误导致网站无法访问。
  • 织梦版本差异:不同版本的织梦文件路径和代码可能略有不同,以下方法基于较新和较常见的版本(如 DedeCMS 5.7)。

步骤 1:修改 arc.listview.class.php 文件

这个文件用于处理列表页的URL生成。

  1. 找到文件:通过FTP或主机文件管理器,进入您的网站根目录,找到以下路径: /include/arc.listview.class.php

  2. 编辑文件:用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开这个文件。

  3. 定位并修改代码

    织梦网站栏目不带html的后缀
    (图片来源网络,侵删)
    • 按下 Ctrl + F 搜索关键字 GetFileUrl

    • 您会找到一个名为 GetFileUrl 的函数,找到其中一行类似这样的代码:

      $this->Fields['typeurl'] = GetFileUrl($this->Fields['id'],$this->Fields['typeid'],'',$this->Fields['ismake'],$this->Fields['arcrank'],$this->Fields['namerule'],$this->Fields['typedir'],$this->Fields['money'],$this->Fields['filename'],$this->Fields['moresite'],$this->Fields['siteurl'],$this->Fields['sitepath']);
    • 我们需要找到 GetFileUrl 这个函数的定义,并修改它,继续在文件中搜索 function GetFileUrl

    • GetFileUrl 函数内部,找到处理 .html 后缀的逻辑,通常是在函数的末尾,有一行类似这样的代码:

      // $defaultname = empty($defaultname) ? 'index.html' : $defaultname;

      注意:这行代码在有些版本里是注释掉的,但关键在于它下面的逻辑,找到生成URL的核心部分,它通常是一个 return 语句,并且会包含 $namerule 变量。

    • 更准确的方法是,找到生成URL的 return 语句,并移除其中的 .html,找到类似下面这样的代码块:

      // ... 函数内部逻辑 ...
      if($isremote == 2 && $isurl == 1)
      {
        // ... 远程文件处理 ...
      }
      else
      {
        $murl = $typedir.'/'.$defaultname;
      }
      return $murl;

      您需要确保 $defaultname 变量在传递进来时就不包含 .html,最稳妥的修改是,在 return 语句之前,对 $defaultname 进行一次处理。

    • 推荐的修改代码:在 GetFileUrl 函数的末尾,return 语句之前,添加以下代码,将所有 .html 后缀替换为空:

      // 在 return 语句之前添加
      $defaultname = preg_replace('/\.html$/i', '', $defaultname);

      修改后的代码片段可能看起来像这样:

      // ... 函数前面的逻辑 ...

    // 在 return 语句之前,添加这行 $defaultname = preg_replace('/.html$/i', '', $defaultname);

    $murl = $typedir.'/'.$defaultname; return $murl;

    
    *   **保存文件**。

步骤 2:修改 channelunit.class.php 文件

这个文件用于处理栏目页和文章页的URL。

  1. 找到文件:路径通常在: /include/channelunit.class.php

  2. 编辑文件:用代码编辑器打开。

  3. 定位并修改代码

    • 搜索 GetDefaultUrl 函数。
    • 在这个函数内部,找到生成栏目首页URL的代码,通常是一个 switch 语句或 if 判断,处理 $isdefault == 1 的情况。
    • 您会看到类似这样的代码:
      case 'index':
      case 'default':
        $reurl = $GLOBALS['cfg_phpurl']."/list.php?tid=".$typeid;
        break;

      这步很重要:织梦默认情况下,栏目首页(如 /about/)是通过 list.php 伪静态生成的,而我们希望的是直接访问目录(如 /about/),这里的逻辑需要修改。

    • 修改 case 'default': 的部分,让它返回目录形式的URL:
      case 'index':
      case 'default':
        // 将原来的伪静态URL修改为目录形式的URL
        $typedir = $this->TypeInfos['typedir'];
        $typedir = preg_replace('/^..\//', '/', $typedir); // 处理 ../ 开头的路径
        $reurl = $typedir.'/'; // 确保以 / 
        break;
    • 保存文件

服务器伪静态规则(确保访问正常)

去掉了 .html 后缀,实际上是将网站的URL从静态形式改为了目录形式,为了让服务器能正确识别并处理这种URL,您需要配置服务器的伪静态规则。

  1. 登录您的虚拟主机控制面板(如 cPanel, 宝塔面板等)或通过FTP访问服务器。

  2. 找到伪静态配置文件

    • Apache服务器:在网站根目录下创建或修改 .htaccess 文件。
    • Nginx服务器:修改 Nginx 的配置文件(通常在 /etc/nginx/sites-available/ 目录下),或者在宝塔面板中直接设置伪静态规则。
  3. 添加对应的规则

    • Apache (.htaccess) 规则

      <IfModule mod_rewrite.c>
      RewriteEngine On
      # 确保目录斜杠存在
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ /index.php [L,E=PATH_INFO:$1]
      </IfModule>

      这个规则会将所有不存在的文件和目录的请求,都转发到 index.php 处理。

    • Nginx (nginx.conf) 规则

      location / {
      if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php?s=$1 last;
        break;
      }
      }

      在宝塔面板中,您可以直接选择“织梦CMS”的伪静态模板,它会自动生成正确的规则。


总结步骤

  1. 后台设置:进入 系统 -> 系统基本参数 -> 核心设置,将 栏目默认页的名称 改为 index,并保存,这是最基础的一步。
  2. 文件修改:如果子栏目仍有后缀,修改 include/arc.listview.class.phpinclude/channelunit.class.php 文件,移除 .html 后缀逻辑。
  3. 伪静态配置:确保服务器(Apache或Nginx)配置了正确的伪静态规则,使不带后缀的URL能够正常访问。

按照以上步骤操作,您的织梦网站栏目就可以成功去掉 .html 后缀了,如果在操作过程中遇到问题,请首先检查文件备份,并根据错误信息排查是哪个环节出了问题。

-- 展开阅读全文 --
头像
dede如何批量删除采集内容?
« 上一篇 昨天
织梦模板如何优化SEO技术博客?
下一篇 » 昨天

相关文章

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

目录[+]