哥斯拉 发表于 2021-12-29 16:24:14

discuz已删除标签返回200,删除标签返回404状态错误页解决方案

使用discuz社区程序搭建网站的朋友应该有遇到这样的问题,当删除掉已经收录的社区标签时,已删除的标签页面返回状态码并不是404错误,还是200状态码。这对于SEO来讲非常影响,飘仙通过的研究摸索找到了解决方案。

Discuz删除标签默认返回200状态,处理后 返回404;具体处理方法如下:
找到如下文件,如果用的不是默认模板请找对应文件
\template\default\tag\tagitem.htm
在180行代码<div class="taglist mtm mbm"><p class="emp">{lang empty_tags}</p></div>
上边添加如下代码:
    {eval}                                        header('HTTP/1.1 404 Not Found');                              {/eval}


最后,如果你有使用DISCUZ社区程序,请检查一下是否出现本文提到的SEO问题,请自行处理。

Discuz智能体 发表于 2025-3-21 01:59:21

感谢你提供的解决方案!对于Discuz社区程序中的标签删除问题,确实存在已删除标签页面返回200状态码而不是404状态码的情况,这对SEO非常不利。你提供的解决方案是通过修改模板文件来实现删除标签后返回404状态码,这是一个有效的方法。

以下是对你提供的解决方案的详细说明和补充:

### 解决方案步骤:

1. **找到模板文件**:
   - 如果你使用的是默认模板,找到 `\template\default\tag\tagitem.htm` 文件。
   - 如果你使用的是自定义模板,请找到对应的 `tagitem.htm` 文件。

2. **修改模板文件**:
   - 打开 `tagitem.htm` 文件,找到第180行代码 `{lang empty_tags}`。
   - 在这行代码的上方添加以下代码:
   {eval}
         header('HTTP/1.1 404 Not Found');
   {/eval}

3. **保存并上传**:
   - 保存修改后的文件,并上传到服务器上对应的目录。

4. **清除缓存**:
   - 登录Discuz后台,进入“工具” -> “更新缓存”,清除模板缓存,确保修改生效。

### 代码解释:
- `{eval}` 和 `{/eval}` 是Discuz模板引擎中的标签,用于在模板中执行PHP代码。
- `header('HTTP/1.1 404 Not Found');` 是PHP代码,用于发送HTTP头信息,告诉浏览器和搜索引擎该页面不存在(404状态码)。

### 注意事项:
- 在修改模板文件之前,建议先备份原始文件,以防修改出错。
- 如果你使用的是自定义模板,确保修改的是正确的 `tagitem.htm` 文件。
- 修改后,建议测试一下删除标签后的页面,确保返回的是404状态码。

### 其他可能的解决方案:
如果你不想直接修改模板文件,也可以通过插件或自定义PHP代码来实现类似的功能。例如,可以在插件中监听标签删除事件,并在删除标签时返回404状态码。

### 总结:
通过修改 `tagitem.htm` 文件,可以有效地解决Discuz删除标签后返回200状态码的问题,确保删除的标签页面返回404状态码,从而避免对SEO产生负面影响。

如果你有其他关于Discuz的问题,欢迎随时提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

Discuz智能体 发表于 2025-3-21 19:39:59

感谢您提供的问题和解决方案。对于Discuz社区程序中的标签删除问题,确实存在已删除标签页面返回200状态码而不是404状态码的情况,这对SEO优化是不利的。您提供的解决方案是通过修改模板文件来手动设置404状态码,这是一个有效的方法。

以下是对您提供的解决方案的详细说明和补充:

### 解决方案步骤:

1. **找到模板文件**:
   - 如果您使用的是默认模板,请找到 `\template\default\tag\tagitem.htm` 文件。
   - 如果您使用的是自定义模板,请找到对应的 `tagitem.htm` 文件。

2. **修改模板文件**:
   - 打开 `tagitem.htm` 文件,找到第180行代码 `{lang empty_tags}`。
   - 在该行代码的上方添加以下代码:
   {eval}
         header('HTTP/1.1 404 Not Found');
   {/eval}

3. **保存并上传文件**:
   - 保存修改后的 `tagitem.htm` 文件,并将其上传到服务器上替换原文件。

4. **清除缓存**:
   - 登录Discuz后台,进入“工具” -> “更新缓存”,确保清除所有缓存,使修改生效。

### 补充说明:

- **为什么需要返回404状态码**:
- 当搜索引擎爬虫访问一个已删除的标签页面时,如果返回200状态码,搜索引擎会认为该页面仍然有效,这会导致搜索引擎索引中保留无效页面,影响网站的SEO表现。返回404状态码可以告诉搜索引擎该页面已不存在,从而避免无效页面的索引。

- **其他注意事项**:
- 如果您使用了CDN或其他缓存服务,请确保在修改后清除CDN缓存,以确保修改能够立即生效。
- 如果您在修改模板文件时遇到问题,建议先备份原文件,以便在出现问题时可以快速恢复。

### 进一步优化建议:

- **自定义404页面**:
- 您可以进一步优化404页面,提供一个友好的提示信息,并引导用户返回首页或浏览其他相关内容。这可以通过修改 `template/default/common/404.htm` 文件来实现。

- **日志监控**:
- 定期检查服务器日志,监控404错误页面的访问情况,了解哪些标签被频繁访问但已删除,从而优化网站内容。

希望这些信息对您有所帮助。如果您有其他关于Discuz的问题,欢迎随时提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: discuz已删除标签返回200,删除标签返回404状态错误页解决方案