织梦的Tags伪静态,核心原理是修改两个地方:
- 后台设置:告诉织梦你想用什么URL格式来显示Tags。
- 文件修改:修改前台显示Tags链接的文件,让它们生成你设置的伪静态URL格式。
- 服务器配置:确保你的Web服务器(如Apache或Nginx)能正确地将伪静态URL请求转发给织梦程序处理。
第一步:后台开启伪静态功能
这是最基础的一步,让织梦系统支持伪静态规则。
- 登录织梦后台。
- 进入【系统】-> 【系统基本参数】。
- 在左侧菜单栏选择 【核心设置】。
- 找到 是否使用伪静态 这一项,将其值修改为 “是”。
- 点击【保存】。
第二步:修改前台文件,生成正确的Tags链接
织梦默认的Tags链接是 tags.php?/关键词/ 这样的动态格式,我们需要修改文件,让它生成 /tags/关键词.html 这样的伪静态格式。
需要修改的核心文件是:/include/arc.taglist.class.php
操作步骤:
- 通过FTP或文件管理器,找到并下载你网站根目录下的
/include/arc.taglist.class.php文件。 - 用代码编辑器(如VS Code, Sublime Text, Notepad++)打开这个文件。
- 按下
Ctrl + F搜索GetMkUrl()函数,这个函数负责生成Tags页面的URL。 - 找到类似下面这样的代码段(版本不同,代码行号可能略有差异,但逻辑相似):
// 在 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;
}
- 将上述代码修改为以下伪静态格式:
// 修改后的 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,这样就形成了我们想要的伪静态格式。
- 保存并上传修改后的
arc.taglist.class.php文件到服务器。
重要提示: 修改这个文件后,织梦生成的所有Tags链接(包括文章页的Tags链接、Tags列表页的链接等)都会变成新的伪静态格式。
第三步:配置服务器伪静态规则
这是最关键的一步,你需要告诉服务器,当用户访问 /tags/xxx.html 这样的URL时,应该将其内部转换为 tags.php?/xxx/ 来处理,用户则看不到这个转换过程。
A. Apache服务器伪静态配置
如果你的服务器是Apache,需要修改 .htaccess 文件。
- 找到你网站根目录下的
.htaccess文件。 - 在文件中添加以下规则(如果已有
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]
- 保存
.htaccess文件并上传到服务器根目录。
B. Nginx服务器伪静态配置
如果你的服务器是Nginx,需要修改Nginx的配置文件(通常在 /usr/local/nginx/conf/nginx.conf 或网站配置文件中)。
- 在你的网站
server配置块中添加以下规则:
# 在 server { ... } 块内添加
# 将 /tags/关键词.html 这样的请求,转发给 tags.php?/关键词/ 来处理
rewrite "^/tags/(.+)\.html$" /tags.php?/$1/ last;
- 保存配置文件,然后执行
nginx -s reload命令重新加载Nginx配置,使其生效。
第四步:更新缓存和测试
- 更新全站缓存:登录织梦后台,进入【系统】-> 【一键更新网站】,建议选择“更新所有”或至少更新“文档HTML”和“Tags列表”,以确保新生成的链接规则被应用到全站。
- 测试:
- 访问你的Tags列表页(通常是
你的域名/tags.php),检查页面上的每一个Tags链接是否都变成了/tags/关键词.html的格式。 - 点击这些链接,看是否能正常跳转到对应的Tags页面。
- 如果出现404错误,请检查:
- 第三步的伪静态规则是否写错或未生效。
- 服务器是否开启了伪静态模块(Apache的
mod_rewrite)。 - URL格式是否与规则完全匹配。
- 访问你的Tags列表页(通常是
常见问题与解决
-
问题1:修改了
arc.taglist.class.php后,链接没变。- 原因:织梦有缓存。
- 解决:在后台【一键更新网站】,更新Tags列表,或者直接清空一下缓存。
-
问题2:设置了伪静态规则,但访问Tags页面出现404错误。
- 原因:服务器未正确解析伪静态规则。
- 解决:
- Apache:确认
.htaccess文件在根目录,且权限正确,检查mod_rewrite模块是否已启用。 - Nginx:确认配置文件语法正确,并已
reload,Nginx的伪静态规则通常需要放在location / { ... }块内。
- Apache:确认
-
问题3:Tags页面内容正常,但分页链接是动态的(
tags.php?/关键词/2)。- 原因:Tags分页的URL规则没有被修改。
- 解决:同样在
arc.taglist.class.php文件中,搜索与分页相关的GetMkUrl()调用或分页URL生成代码,将其也修改为伪静态格式,/tags/关键词-2.html,这通常需要更深入的代码分析,但大部分情况下,修改主GetMkUrl()函数就能解决大部分问题。
通过以上四个步骤,你就可以成功地为织梦CMS的Tags页面配置伪静态,从而提升网站的SEO表现和用户体验。
