织梦tag中文url如何设置?

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

默认情况下,织梦的Tag链接是 tags.php?/标签名/ 这样的形式,包含英文问号和斜杠,不够美观,也不利于SEO,将其修改为 tags/标签名.htmltag/标签名.html 这样的形式,是很多网站优化的需求。

实现这个功能主要分为两个步骤:

  1. 修改文件:修改核心文件,让程序能识别新的URL格式。
  2. 配置服务器:配置服务器(如Apache或Nginx),将新URL重写(Rewrite)到真实的 tags.php

第一步:修改织梦核心文件

我们需要修改两个文件,让织梦在生成和识别Tag链接时使用新的格式。

修改 include/helpers/tag.helper.php 文件

这个文件是专门用来处理Tag链接生成的,我们需要找到其中生成URL的代码段并替换它。

操作步骤:

  1. 使用FTP或文件管理器,登录你的网站服务器。

  2. 找到并下载 /include/helpers/tag.helper.php 文件。

  3. 用代码编辑器(如VS Code, Sublime Text, Notepad++)打开它。

  4. 按快捷键 Ctrl + F 搜索 tags.php?

  5. 你会找到类似下面这样的代码(可能因织梦版本略有不同):

    // 在文件中找到这一行或类似的代码
    $tagsUrl = $cfg_cmsurl."/tags.php?/".$row['tagname'];
  6. 将这行代码替换为

    // 新的URL格式,/tags/标签名.html
    $tagsUrl = $cfg_cmsurl."/tags/".$row['tagname'].".html";

    注意

    • $cfg_cmsurl 是你的网站根目录地址,https://www.yourdomain.com
    • 我这里使用了 /tags/ 作为路径,你也可以改成 /tag/ 或其他你喜欢的,但必须与后面Nginx/Apache的 Rewrite 规则保持一致
    • 修改后,织梦在生成所有Tag链接时,都会使用这个新的格式。
  7. 保存并上传覆盖原文件。

修改 tags.php 文件

这个文件是Tag页面的真实入口,我们需要修改它,让它能够正确解析类似 tags/标签名.html 这样的URL,并从中提取出“标签名”。

操作步骤:

  1. 下载你的网站根目录下的 tags.php 文件。

  2. 用代码编辑器打开它。

  3. 找到获取标签名的代码,通常在文件的开头部分,类似这样:

    // 在文件中找到这一行或类似的代码
    $tag = isset($tag) ? trim($tag) : '';
    // 或者可能是
    $tag = FilterSearch(urldecode($tag));
  4. 将其修改为

    // 新的代码,用于从 /tags/标签名.html 中提取标签名
    if (isset($_SERVER['PATH_INFO'])) {
        // PATH_INFO 会是 /标签名.html 这样的格式
        $path_info = trim($_SERVER['PATH_INFO'], '/');
        // 确保它以 .html 并且不是 tags.php 本身
        if (substr($path_info, -5) == '.html' && $path_info != 'tags.php') {
            // 移除 .html 后缀,得到纯标签名
            $tag = substr($path_info, 0, -5);
        } else {
            $tag = '';
        }
    } else {
        $tag = '';
    }
    // 对标签名进行必要的过滤,防止注入
    $tag = FilterSearch(urldecode($tag));

    代码解释

    • $_SERVER['PATH_INFO'] 是一个PHP超全局变量,当URL是 https://www.yourdomain.com/tags/标签名.html 时,它的值就是 '/标签名.html'
    • 我们通过 trim() 去掉两端的斜杠,用 substr() 截取掉末尾的 .html,从而得到干净的“标签名”。
    • FilterSearch()urldecode() 是织梦原有的安全过滤函数,确保标签名安全。
  5. 保存并上传覆盖原文件。


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

修改完文件后,服务器还不知道如何处理 tags/标签名.html 这样的请求,我们需要告诉服务器,当遇到这种请求时,把它 internally 转发给 tags.php 文件去处理。

请根据你的服务器类型选择对应的配置方法。

如果你的服务器是 Nginx

  1. 找到你的Nginx配置文件,通常是 nginx.conf 或者你网站配置文件(在 sites-availablevhost 目录下)。

  2. server { ... } 块内,添加或修改 rewrite 规则。

    # 在 server { ... } 块内添加如下规则
    location /tags/ {
        # 如果请求的是一个文件或目录,并且真实存在,则直接访问,不重写
        if (-f $request_filename) {
            break;
        }
        # 将 /tags/任意内容.html 的请求重写到 tags.php
        rewrite "^/tags/(.+)\.html$" /tags.php?/$1 last;
    }

    规则解释

    • location /tags/ { ... }:匹配所有以 /tags/ 开头的请求。
    • rewrite "^/tags/(.+)\.html$" /tags.php?/$1 last;:这是核心。
      • ^/tags/(.+)\.html$:是一个正则表达式,匹配 /tags/ 后面跟着任意字符(),最后以 .html 结尾的URL。
      • /tags.php?/$1:将匹配到的URL重写到 tags.php$1 是正则表达式中第一个括号 捕获到的内容,也就是你的“标签名”,注意这里我们加回了 ,是因为 tags.php 内部代码在处理时,可能期望这种格式(但我们第一步已经修改了它,所以这里其实也可以写成 /tags.php/$1,为了兼容性,保留原样更稳妥)。
      • last:表示停止当前层的 rewrite 检查,并搜索匹配的 location
  3. 保存Nginx配置文件,然后执行 nginx -t 检查配置是否正确,最后执行 nginx -s reload 重新加载配置。

如果你的服务器是 Apache

  1. 确保你的Apache服务器开启了 mod_rewrite 模块,通常虚拟主机商会默认开启。

  2. 在你的网站根目录下,找到或创建一个名为 .htaccess 的文件。

  3. 在文件中添加或修改以下规则:

    # 将RewriteEngine打开
    RewriteEngine On
    # 如果请求的文件或目录真实存在,则不进行重写
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # 核心重写规则
    RewriteRule ^tags/(.*)\.html$ tags.php?/$1 [L]

    规则解释

    • RewriteEngine On:开启URL重写引擎。
    • RewriteCond ...:是重写条件,确保只有当请求的文件或目录不存在时才进行重写,避免影响真实存在的文件(如图片、CSS、JS)。
    • RewriteRule ^tags/(.*)\.html$ tags.php?/$1 [L]:核心重写规则。
      • ^tags/(.*)\.html$:正则表达式,匹配 tags/ 后面任意字符(),并以 .html 结尾的URL。
      • tags.php?/$1:重写目标。$1 代表第一个括号 捕获到的内容(即标签名)。
      • [L]:表示这是最后一条规则,匹配到后就停止。
  4. 保存 .htaccess 文件即可,Apache通常会自动检测并应用。


第三步:验证和测试

完成以上所有步骤后:

  1. 清除缓存:登录织梦后台,【系统】->【清除缓存】,确保新的URL规则被正确应用。
  2. 前台测试
    • 访问任何一个Tag页面,观察浏览器地址栏是否已经变成了 https://www.yourdomain.com/tags/标签名.html 的格式。
    • 点击Tag链接,确认是否能正常跳转并显示对应的文章列表。
    • 检查页面中的分页链接,确保它们也遵循了新的URL格式。

如果一切正常,恭喜你,你已经成功地为织梦Tag设置了中文URL!

常见问题排查

  • 404错误:最常见的原因是服务器伪静态规则没有配置正确或没有生效,请仔细检查Nginx或Apache的配置,并确保已经重载了服务配置。
  • 页面打不开或内容错乱:可能是 tags.php 文件的修改有误,导致无法正确获取标签名,请检查第一步中的代码修改是否正确。
  • URL还是旧格式:可能是缓存问题,请务必清除织梦缓存和浏览器缓存后重试,也可能是 tag.helper.php 文件没有被正确修改。
-- 展开阅读全文 --
头像
dede数据库配置文件在哪?如何修改配置?
« 上一篇 今天
织梦、帝国与学校网站,如何高效搭建?
下一篇 » 今天

相关文章

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

目录[+]