【问题标题】:Drupal 7 some non-existing URLs are not Redirecting to 404?Drupal 7 一些不存在的 URL 没有重定向到 404?
【发布时间】:2012-09-04 15:56:03
【问题描述】:

在 Drupal 7 中,一些(不存在的)URL 没有重定向到 404 或它应该重定向到的任何错误页面。相反,它仍然显示其顶级父文件夹。比如像:

  • www.mywebsite.com/items/aaaaaaaaaaaaaa
  • www.mywebsite.com/items/bbbbbbbbbbbbbbbbbb

/items/ 下的每个错误 URL 都像上面一样显示其父页面:
www.mywebsite.com/items 而不是重定向到 404
我不希望显示其父级如果真的没有页面

但奇怪的是,并非所有模式都发生这种情况。我的意思是,另一个不同的父母喜欢:

  • www.mywebsite.com/users/aaaaaaaaaaaaaa
  • www.mywebsite.com/users/bbbbbbbbbbbbbbbbb

对于在这个/users/父路径下输入的错误url,它会正确地重定向到404页面。

请问是什么?

【问题讨论】:

    标签: redirect drupal drupal-path-aliases


    【解决方案1】:

    如果我正确理解您的问题,那根本不是问题。

    那是因为你的/contributed/core 模块如何挂钩 Drupal 菜单系统。

    如果一个菜单项(具体来说是菜单路由器项。想想像“admin/config/development/performance”这样的路径)没有“%”符号,菜单回调函数将被执行。 例如,如果一个模块注册“items”路径 example.com/items 路径不会是 404,并且菜单项的相应菜单回调函数将被触发。如果给定,该回调函数可以使用更多的 URL 部分(example.com/items/123)。

    'node' 就是一个很好的例子。 (但从技术上讲,它们是不同的菜单路由器项目)。 打开 example.com/node 不会触发 404。

    如果模块注册了 'items/%' ,那么 example.com/items 将触发 404。换句话说,需要第二个 URL 部分才能执行菜单回调函数。

    如果您遇到的问题与自定义模块有关,请确保您注册了正确版本的路由器项目。如果需要第二个 URL 部分,请注册 items/%。 你可以通过调用drupal_not_found()来执行404。

    【讨论】:

      【解决方案2】:

      【讨论】:

      • Views 404 页面上的这个注释帮助了我:视图的 404s 也可以通过在 Arguments 下设置 Global: Null 来完成。
      【解决方案3】:

      您是否将Views 用于该路径(/items)?

      这是视图的问题:Prevent duplicate content (because Views returns 200 instead of 400 404)

      您可以创建一个上下文过滤器来防止这种情况。

      merlinofchaos wrote:

      如果您不希望出现这种行为,请将 Global: NULL 参数添加到 Views 并使用该设置来验证该参数是否为空。

      对于 Drupal 6,模块 Views 404 可能会有所帮助。

      【讨论】:

        【解决方案4】:

        您可以将您的 drupal 安装配置为重定向到您创建的特定 404 页面..

        转到www.yoursite.com/admin/config/system/site-information 并输入您的 404 页面。

        【讨论】:

        • 我认为这不适用于 4lvin。错误页面适用于他,不适用于所有页面。
        猜你喜欢
        • 2015-10-13
        • 1970-01-01
        • 1970-01-01
        • 2011-11-23
        • 2015-06-12
        • 2015-05-02
        • 2018-06-20
        • 2013-06-12
        • 1970-01-01
        相关资源
        最近更新 更多