3

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

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

我在上面放置的每个 WRONG URL/items/都显示其父页面:
www.mywebsite.com/items而不是重定向到 404 ,如果真的没有页面
, 我不希望显示其父页面。

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

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

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

请问是什么?

4

4 回答 4

3

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

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

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

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

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

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

于 2012-09-04T16:56:24.533 回答
1

您是否使用该路径的视图( /items)?

Here is an issue for Views: Prevent duplicate content (because Views returns 200 instead of 400 404)

You could create a Contextual filter to prevent this.

merlinofchaos wrote:

If you don't want this behavior, add the Global: NULL argument to Views and use the setting to validate that the argument is empty.

For Drupal 6, the module Views 404 might help.

于 2012-09-06T14:07:17.017 回答
1

Look at this, really helpfull http://peterpetrik.com/blog/2009/11/non-existent-urls-views-2

于 2012-10-01T07:45:57.917 回答
0

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

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

于 2012-09-05T10:12:35.177 回答