1

MODX 将所有未找到的页面重定向到 404 状态代码。永远消失的页面需要设置 410。Google 网站管理员会不断检查具有 404 响应的抓取错误中不存在的页面。

在 MODX中设置 410.htaccess仍会导致 404

RewriteEngine On
RewriteBase /
RewriteRule ^folder/ - [G,L]

如何在 MODX 中设置 410 代码?

4

2 回答 2

0

看起来您应该能够使用 sendRedirect 方法:

http://rtfm.modx.com/revolution/2.x/developing-in-modx/other-development-resources/class-reference/modx/modx.sendredirect

但有趣的部分是:您将如何确定页面实际上是 410 还是合法的 404?您可能需要对 modx 如何处理 404 进行一些研究,并尝试在它在插件中发送之前捕获它。

于 2015-05-12T18:38:35.497 回答
0

此脚本检查请求的资源是否存在,如果存在则返回 410。如果资源不存在,则返回默认的 404。这对于之前发布并由 Google 索引的资源非常有用。

此脚本不检查已删除的资源。如果你想要这个,你需要编写一个代码来存储所有曾经存在的别名,并根据该列表检查任何 OnPageNotFound 请求。

创建一个名为set410的插件

检查系统事件OnPageNotFound

粘贴此代码:

<?php
$alias = basename(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)); // Get last alias from url (preserve only the alias after last slash). Needed when using subfolders.
$resource = $modx->getObject('modResource', array('alias' => $alias));

if ($resource) {
    $modx->sendForward(411, 'HTTP/1.1 410 Gone'); // ID found > 410
}
?>

记住:

  • 将 999 替换为 410 页面的 ID。
  • 请记住使用您未登录管理器的浏览器测试此功能!
  • 此脚本仅在启用友好 URL 的情况下进行测试
于 2015-11-09T15:36:46.313 回答