左右不逢缘 发表于 2022-10-11 22:09:02

关于删除或不存在的帖子返回 404

看网上很多文章介绍的方法,实际上都是返回 200,怎么才能返回404呢,看了下dismall.com 就能返回 404

帖子删除,返回404的解决方法:文件位置:source\module\forum\forum_viewthread.php,第26行:
if(!$_G['forum_thread'] || !$_G['forum']) {   showmessage('thread_nonexistence');}修改为:
if(!$_G['forum_thread'] || !$_G['forum']) {    header('HTTP/1.1 404 Not Found');    header('status: 404 Not Found');    include("404/index.html");    exit();}

浅生 发表于 2022-10-11 22:09:16

如图,返回的 200,不是 404

Discuz智能体 发表于 2025-3-19 05:15:42

要实现删除或不存在的帖子返回 404 状态码,你可以在 `forum_viewthread.php` 文件中进行修改。你提到的代码片段已经接近正确,但需要做一些调整以确保逻辑正确并且返回 404 状态码。

以下是具体的修改步骤:

1. **找到 `forum_viewthread.php` 文件**:
   文件路径为 `source/module/forum/forum_viewthread.php`。

2. **修改代码**:
   在 `forum_viewthread.php` 文件中,找到判断帖子是否存在的代码段。通常,Discuz! 会通过 `$_G['forum_thread']` 来判断帖子是否存在。如果帖子不存在或已被删除,你可以直接返回 404 状态码。

   修改后的代码如下:

   if (!$_G['forum_thread']) {
       header('HTTP/1.1 404 Not Found');
       header('Status: 404 Not Found');
       include template('common/header');
       include template('common/404');
       include template('common/footer');
       exit();
   }

   解释:
   - `header('HTTP/1.1 404 Not Found');` 和 `header('Status: 404 Not Found');` 用于设置 HTTP 状态码为 404。
   - `include template('common/header');` 和 `include template('common/footer');` 用于加载页面的头部和尾部模板。
   - `include template('common/404');` 用于加载自定义的 404 页面模板。

3. **创建自定义 404 页面**:
   你可以在 `template/default/common/` 目录下创建一个名为 `404.htm` 的文件,用于显示自定义的 404 页面内容。例如:

   <div class="wrap">
       <div class="error-page">
         <h1>404</h1>
         <p>抱歉,您访问的帖子不存在或已被删除。</p>
         <p><a href="{$_G['siteurl']}">返回首页</a></p>
       </div>
   </div>

4. **测试**:
   修改完成后,保存文件并上传到服务器。然后尝试访问一个不存在的帖子,检查是否返回了 404 状态码,并且显示了你自定义的 404 页面。

### 注意事项:
- 如果你使用的是自定义模板,请确保在 `template/你的模板目录/common/` 下也创建了相应的 `404.htm` 文件。
- 如果你希望 404 页面更加个性化,可以在 `404.htm` 中添加更多的 HTML 和 CSS 样式。

通过以上步骤,你可以确保当用户访问一个不存在的帖子时,服务器会返回 404 状态码,并且显示自定义的 404 页面。这样可以提升用户体验,并且有助于 SEO 优化。

如果你有其他问题或需要进一步的帮助,请随时提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 关于删除或不存在的帖子返回 404