织梦tags伪静态如何实现?

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

织梦的Tags伪静态,核心原理是修改两个地方:

  1. 后台设置:告诉织梦你想用什么URL格式来显示Tags。
  2. 文件修改:修改前台显示Tags链接的文件,让它们生成你设置的伪静态URL格式。
  3. 服务器配置:确保你的Web服务器(如Apache或Nginx)能正确地将伪静态URL请求转发给织梦程序处理。

第一步:后台开启伪静态功能

这是最基础的一步,让织梦系统支持伪静态规则。

  1. 登录织梦后台。
  2. 进入【系统】-> 【系统基本参数】
  3. 在左侧菜单栏选择 【核心设置】
  4. 找到 是否使用伪静态 这一项,将其值修改为 “是”
  5. 点击【保存】。

第二步:修改前台文件,生成正确的Tags链接

织梦默认的Tags链接是 tags.php?/关键词/ 这样的动态格式,我们需要修改文件,让它生成 /tags/关键词.html 这样的伪静态格式。

需要修改的核心文件是:/include/arc.taglist.class.php

操作步骤:

  1. 通过FTP或文件管理器,找到并下载你网站根目录下的 /include/arc.taglist.class.php 文件。
  2. 用代码编辑器(如VS Code, Sublime Text, Notepad++)打开这个文件。
  3. 按下 Ctrl + F 搜索 GetMkUrl() 函数,这个函数负责生成Tags页面的URL。
  4. 找到类似下面这样的代码段(版本不同,代码行号可能略有差异,但逻辑相似):
// 在 arc.taglist.class.php 文件中
function GetMkUrl($islink, $type = 0, $tag = '') {
    if ($type == 0) {
        // ... 其他代码 ...
        $reurl = $GLOBALS['cfg_phpurl'] . "/tags.php?/" . urlencode($tag) . "/";
    } else if ($type == 1) {
        // ... 其他代码 ...
        $reurl = $GLOBALS['cfg_phpurl'] . "/tags.php?/+" . urlencode($tag) . "/";
    } else if ($type == 2) {
        // ... 其他代码 ...
        $reurl = $GLOBALS['cfg_phpurl'] . "/tags.php?/-" . urlencode($tag) . "/";
    }
    return $reurl;
}
  1. 将上述代码修改为以下伪静态格式:
// 修改后的 arc.taglist.class.php 文件中
function GetMkUrl($islink, $type = 0, $tag = '') {
    if ($type == 0) {
        // 修改点:将动态URL改为伪静态URL
        // 原代码: $reurl = $GLOBALS['cfg_phpurl'] . "/tags.php?/" . urlencode($tag) . "/";
        $reurl = $GLOBALS['cfg_cmspath'] . "/tags/" . urlencode($tag) . ".html";
    } else if ($type == 1) {
        // 修改点:包含特定标签的URL
        // 原代码: $reurl = $GLOBALS['cfg_phpurl'] . "/tags.php?/+" . urlencode($tag) . "/";
        $reurl = $GLOBALS['cfg_cmspath'] . "/tags/+" . urlencode($tag) . ".html";
    } else if ($type == 2) {
        // 修改点:排除特定标签的URL
        // 原代码: $reurl = $GLOBALS['cfg_phpurl'] . "/tags.php?/-" . urlencode($tag) . "/";
        $reurl = $GLOBALS['cfg_cmspath'] . "/tags/-" . urlencode($tag) . ".html";
    }
    return $reurl;
}

代码解释:

  • $GLOBALS['cfg_phpurl']:指向 /php/ 目录,这是动态脚本所在的位置。
  • $GLOBALS['cfg_cmspath']:指向你的网站根目录(如 )。
  • 我们将 tags.php?/ 替换成了 tags/,并在末尾加上了 .html,这样就形成了我们想要的伪静态格式。
  1. 保存并上传修改后的 arc.taglist.class.php 文件到服务器。

重要提示: 修改这个文件后,织梦生成的所有Tags链接(包括文章页的Tags链接、Tags列表页的链接等)都会变成新的伪静态格式。


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

这是最关键的一步,你需要告诉服务器,当用户访问 /tags/xxx.html 这样的URL时,应该将其内部转换为 tags.php?/xxx/ 来处理,用户则看不到这个转换过程。

A. Apache服务器伪静态配置

如果你的服务器是Apache,需要修改 .htaccess 文件。

  1. 找到你网站根目录下的 .htaccess 文件。
  2. 在文件中添加以下规则(如果已有 RewriteEngine On,则只需添加后面的规则):
# 将 RewriteEngine 开启
RewriteEngine On
# 如果请求的文件或目录真实存在,则直接访问,不进行重写
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 这是织梦Tags伪静态的核心规则
# 将 /tags/关键词.html 这样的请求,转发给 tags.php?/关键词/ 来处理
RewriteRule ^tags/(.+)\.html$ tags.php?/$1/ [L]
  1. 保存 .htaccess 文件并上传到服务器根目录。

B. Nginx服务器伪静态配置

如果你的服务器是Nginx,需要修改Nginx的配置文件(通常在 /usr/local/nginx/conf/nginx.conf 或网站配置文件中)。

  1. 在你的网站 server 配置块中添加以下规则:
# 在 server { ... } 块内添加
# 将 /tags/关键词.html 这样的请求,转发给 tags.php?/关键词/ 来处理
rewrite "^/tags/(.+)\.html$" /tags.php?/$1/ last;
  1. 保存配置文件,然后执行 nginx -s reload 命令重新加载Nginx配置,使其生效。

第四步:更新缓存和测试

  1. 更新全站缓存:登录织梦后台,进入【系统】-> 【一键更新网站】,建议选择“更新所有”或至少更新“文档HTML”和“Tags列表”,以确保新生成的链接规则被应用到全站。
  2. 测试
    • 访问你的Tags列表页(通常是 你的域名/tags.php),检查页面上的每一个Tags链接是否都变成了 /tags/关键词.html 的格式。
    • 点击这些链接,看是否能正常跳转到对应的Tags页面。
    • 如果出现404错误,请检查:
      • 第三步的伪静态规则是否写错或未生效。
      • 服务器是否开启了伪静态模块(Apache的 mod_rewrite)。
      • URL格式是否与规则完全匹配。

常见问题与解决

  • 问题1:修改了 arc.taglist.class.php 后,链接没变。

    • 原因:织梦有缓存。
    • 解决:在后台【一键更新网站】,更新Tags列表,或者直接清空一下缓存。
  • 问题2:设置了伪静态规则,但访问Tags页面出现404错误。

    • 原因:服务器未正确解析伪静态规则。
    • 解决
      • Apache:确认 .htaccess 文件在根目录,且权限正确,检查 mod_rewrite 模块是否已启用。
      • Nginx:确认配置文件语法正确,并已 reload,Nginx的伪静态规则通常需要放在 location / { ... } 块内。
  • 问题3:Tags页面内容正常,但分页链接是动态的(tags.php?/关键词/2)。

    • 原因:Tags分页的URL规则没有被修改。
    • 解决:同样在 arc.taglist.class.php 文件中,搜索与分页相关的 GetMkUrl() 调用或分页URL生成代码,将其也修改为伪静态格式,/tags/关键词-2.html,这通常需要更深入的代码分析,但大部分情况下,修改主 GetMkUrl() 函数就能解决大部分问题。

通过以上四个步骤,你就可以成功地为织梦CMS的Tags页面配置伪静态,从而提升网站的SEO表现和用户体验。

-- 展开阅读全文 --
头像
织梦能写Java吗?
« 上一篇 今天
dede后台如何发现并清除挂马?
下一篇 » 今天
取消
微信二维码
支付宝二维码

目录[+]