【问题标题】:How to set a 410 HTTP Status Code in MODX如何在 MODX 中设置 410 HTTP 状态码
【发布时间】:2015-05-12 18:25:26
【问题描述】:

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

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

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

如何在MODX中设置410码?

【问题讨论】:

    标签: apache http modx http-status-code-410


    【解决方案1】:

    看来你应该可以使用 sendRedirect 方法了:

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

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

    【讨论】:

    • 我会在.htaccess中专门设置几个目录为410。问题是,MODX 仍然将它们设置为 404。不确定在哪里调用 sendRedirect 方法。似乎需要将 sn-p 插入每个页面。
    • 另外,sendRedirect 不会重定向到 410。文档指定了 302 和 301。410 导致 302 与 'responseCode' => 'HTTP/1.1 410 Gone'
    • 我读到的方式是它只是〜默认〜 301,它表明您可以将响应代码指定为选项数组的一部分。您最好在系统事件rtfm.modx.com/revolution/2.x/developing-in-modx/… 上设置一个插件 - 在发出请求之后,但在页面呈现和响应交付之前。不确定哪一个最合适 - 您必须进行测试。
    【解决方案2】:

    此脚本检查请求的资源是否存在,如果存在则返回 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 的情况下进行测试

    【讨论】:

    • 这会将所有 404 页面设置为 410,这不是预期的效果。
    • 这是不正确的。该脚本会检查请求的别名是否存在,如果存在,它才会将您发送到 410。
    • 看起来是一个有趣的解决方案,但它不起作用,至少在 MODX 2.7.3 上对我来说不起作用。将其附加到事件 OnPageNotFound 并用我的 404 页面 ID 替换 411,但任何随机页面名称仍返回 404。不确定我是否忽略了某些内容,因为我无法确定插件是否触发。
    猜你喜欢
    • 2018-10-01
    • 2012-05-14
    • 2014-08-03
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多