织梦栏目页文章路径不对

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

下面我将从最常见的原因其他可能性,为你提供一个系统性的排查和解决方案。

织梦栏目页文章路径不对
(图片来源网络,侵删)

第一步:检查并修正文章默认路径(最核心、最常见的原因)

这是导致栏目页文章路径错误的罪魁祸首,织梦默认的文章路径格式是 arcitle.php?id=123,这种路径对搜索引擎不友好,也容易出错,我们需要将其修改为更规范的 /archives/123/123.html 格式。

操作步骤:

  1. 登录织梦后台。

  2. 在顶部菜单栏找到 “系统” -> “系统基本参数”

    织梦栏目页文章路径不对
    (图片来源网络,侵删)
  3. 在左侧菜单中,选择 “核心设置”

  4. 找到以下几个关键选项,并进行修改:

    • (重要) 文件保存目录:

      • 将其修改为你希望文章存放的目录,archives,这会对应最终URL中的 /archives/ 部分。
      • 建议值: archives
    • (重要) 文件命名规则:

      • 这是生成文章URL的核心规则,默认值是 {typedir}/{Y}/{M}{D}/{aid}.html,这个规则在某些情况下会出错,特别是当栏目设置为“使用目录”时。
      • 强烈建议修改为: {typedir}/{aid}.html
      • 为什么修改为这个?
        • {typedir}:会自动替换为栏目的目录。
        • {aid}:使用文章的ID。
        • 这种格式最稳定、最简洁,不容易出错,一篇ID为123的文章,在名为“新闻”的栏目下,路径就是 /news/123.html
    • (可选) 上一篇/下一篇链接使用绝对路径:

      勾选此项,可以确保上一篇/下一篇链接在任何情况下都正确。

  5. 保存设置。

  6. 重新生成所有栏目和文档。

    • 这是最关键的一步!修改了规则后,必须重新生成才能生效。
    • 进入 “生成” -> “更新主页HTML” -> “更新栏目”
    • 然后进入 “生成” -> “更新文档HTML” -> “选择所有栏目”,点击“开始生成”,这个过程可能需要一些时间,请耐心等待。

完成这一步后,80% 的路径问题都能解决。


第二步:检查栏目本身的设置

有时候问题出在栏目本身的配置上。

  1. 栏目链接方式:

    • 进入 “栏目管理”,点击有问题的那个栏目进行编辑。
    • 在栏目编辑页面的最下方,找到 “栏目链接方式”
    • 确保它选择的是 “使用目录”
    • 如果选择的是“使用链接”,那么栏目本身会跳转到你指定的外部链接,而不是其下的文章列表,请确保选择的是“使用目录”,目录”一栏填写了正确的英文目录名(如 news),而不是中文。
  2. 栏目高级选项中的“列表命名规则”:

    • 在栏目编辑页面,切换到 “高级选项” 选项卡。
    • 找到 “列表命名规则”,确保其格式正确,通常默认的 {typedir}/index.html 是可以的,也可以尝试 {typedir}/list_{tid}.html

第三步:检查服务器环境和伪静态规则

织梦的“静态化”实际上是伪静态,如果服务器没有正确配置伪静态规则,.html 后缀的链接就会返回404错误。

  1. 检查伪静态是否开启:

    • 在后台 “系统” -> “系统基本参数” -> “核心设置” 中,确认 “是否使用伪静态” 选项是 “是”
  2. 上传并配置对应的伪静态文件:

    • 织梦后台提供了伪静态规则文件,路径通常是:/dede/htaccess.txt (Apache) 或 /dede/httpd.ini.txt (IIS)。
    • Apache服务器:
      • htaccess.txt 文件下载下来,重命名为 .htaccess
      • 使用FTP工具,将其上传到你的网站根目录(public_html, www 或 htdocs)。
    • IIS服务器:
      • httpd.ini.txt 文件下载下来,重命名为 httpd.ini
      • 使用FTP工具,将其上传到你的网站根目录
      • 注意: IIS服务器还需要在“ISAPI筛选器”中加载“Rewrite”模块。
    • Nginx服务器:
      • 你需要手动在Nginx的配置文件中添加织梦的伪静态规则,规则可以在网上搜索“织梦DedeCMS Nginx伪静态规则”,或者在官方论坛找到,通常如下:
        rewrite "^/special/(.+)\.html$" /special/index.php?$1 last;
        if (!-e $request_filename) {
            rewrite "^/archives/([0-9]+)/([a-z]+)\.html$" /archives/show.php?id=$1&%2 last;
            rewrite "^/archives/([0-9]+)/([0-9]+)\.html$" /archives/show.php?id=$1&%2 last;
            rewrite "^/archives/([0-9]+)/([0-9]+)/([a-z]+)\.html$" /archives/show.php?id=$1&%2 last;
            rewrite "^/archives/([0-9]+)/([0-9]+)/([0-9]+)\.html$" /archives/show.php?id=$1&%2 last;
            rewrite "^/archives/([0-9]+)/([0-9]+)/([0-9]+)/([a-z]+)\.html$" /archives/show.php?id=$1&%2 last;
            rewrite "^/archives/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)\.html$" /archives/show.php?id=$1&%2 last;
            rewrite "^/category/([0-9]+)/([a-z]+)\.html$" /category/list.php?tid=$1&%2 last;
            rewrite "^/category/([0-9]+)/([0-9]+)\.html$" /category/list.php?tid=$1&%2 last;
            rewrite "^/category/([0-9]+)/([0-9]+)/([a-z]+)\.html$" /category/list.php?tid=$1&%2 last;
            rewrite "^/category/([0-9]+)/([0-9]+)/([0-9]+)\.html$" /category/list.php?tid=$1&%2 last;
            rewrite "^/category/([0-9]+)/([0-9]+)/([0-9]+)/([a-z]+)\.html$" /category/list.php?tid=$1&%2 last;
            rewrite "^/category/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)\.html$" /category/list.php?tid=$1&%2 last;
            rewrite "^/tags/([a-z]+)\.html$" /tags/list.php?/$1 last;
            rewrite "^/tags/([a-z]+)$" /tags/list.php?/$1 last;
            rewrite "^/([a-z]+)\.html$" /$1.php last;
        }
  3. 检查目录权限:

    • 确保网站根目录以及你设置的 archives 文件夹(或其他自定义目录)有正确的读写权限(通常是 755 或 777,但 777 有安全风险,建议先用 755 测试),否则织梦无法自动创建和写入HTML文件。

第四步:检查模板文件

极少数情况下,模板文件中的链接写法也可能导致问题。

  1. 检查文章循环标签:

    • 打开问题栏目对应的列表页模板文件(通常在 /templets/default/ 目录下,文件名如 list_article.htm)。
    • 找到文章循环标签,通常是 {dede:list}{dedarclist}
    • 在循环内部,文章的链接通常由 [field:arcurl/] 输出,检查这个标签前后是否有多余的字符或错误的标签。

    一个标准的列表循环示例:

    {dede:list pagesize='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
    {/dede:list}

    确保 [field:arcurl/] 没有被错误地修改或注释掉。


总结与排查流程

如果你遇到栏目页文章路径不对的问题,请按照以下顺序排查,这能最高效地解决问题:

  1. 首要检查: 进入 系统基本参数 -> 核心设置,修改 “文件保存目录”archives“文件命名规则”{typedir}/{aid}.html重新生成所有栏目和文档
  2. 其次检查: 进入 栏目管理,检查问题栏目的 “栏目链接方式” 是否为“使用目录”,以及“目录名”是否正确。
  3. 然后检查: 确认服务器是否开启了伪静态,并正确上传了对应服务器环境的伪静态规则文件(.htaccesshttpd.ini)到网站根目录。
  4. 最后检查: 检查栏目列表页模板文件中的 [field:arcurl/] 标签是否正确。

通过以上四步,绝大多数织梦栏目页文章路径问题都可以得到解决,如果问题依旧存在,请提供具体的错误现象(是路径完全错误,还是点击后404),这样可以帮助更精确地定位问题。

-- 展开阅读全文 --
头像
struct file在C语言中究竟如何使用?
« 上一篇 昨天
getchar如何正确判断EOF结束输入?
下一篇 » 昨天

相关文章

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

目录[+]