如何隐藏不应从用户和搜索引擎直接访问的节点? -- nodes 领域 drupal 相关 的问题

How do I hide nodes that shouldn't be directly accessed from users and search engines?


50
vote

问题

中文

我发现有时我有一个节点,只包含将在其他地方显示的内容,但不应该直接查看。也就是说,没有人应该转到节点/ 1234,但节点1234中的内容应该在其他地方显示。例如,我使用视图创建一个带有选项卡内容的页面。所以有"关于我" ,"关于我们" 和"关于他们" 的页面。所有这些都以使用视图的标签在单个页面中显示。所以我不希望人们直接到"关于我们" 节点,因为那么他们不会看到其他页面的标签。与此同时,我不希望谷歌给人们直接链接到这个节点,我想限制访问,所以用户只能通过视图来实现(即,选项卡)。

所以我需要限制对节点的访问,从Drupal搜索结果中删除它,并确保Google不会接受它。任何建议?

英文原文

I've found that there are times I have a node that simply contains content that will be displayed somewhere else, but shouldn't be viewed directly. That is, no one should ever go to node/1234, but the content in node 1234 should be displayed somewhere else. For example, I create an about page with tabbed content using views. So there are "About Me", "About Us" and "About Them" pages. All of these are displayed in a single page with tabs using Views. So I don't want people to get directly to the "About Us" node because then they wouldn't see the tabs for the other pages. At the same time, I don't want Google giving people a direct link to this node, I want to limit access so users can only get to it through the View (i.e., the tab).

So I need to restrict access to the node, remove it from the Drupal search results, and make sure Google doesn't pick up on it. Any suggestions?

  
     
     

回答列表

28
 
vote
vote
最佳答案
 

对我来说听起来像是面板模块因为你可以创建将覆盖节点页面的面板,以及可以以某种方式设置面板的上下文,如果您需要,可以保证用户看到您希望它们的页面以及面板页面的访问规则,如果您需要它们。有关详细信息,请参阅在d.o.

 

This sounds to me like a good use case for the Panels module because you can create panels that will override node pages, and can set the context for the panel in a way should guarantee users see the page you want them to see it as well as access rules for panel pages if you need them. For further details, see this post on d.o.

 
 
       
       
32
 
vote

兔孔模块提供了此功能。

兔孔是一个模块,它增加了在自己的页面查看实体时应该发生的事情的能力。

也许您有一个内容类型,永远不会在其自己的页面上显示,如在旋转木马中显示的图像内容类型。兔孔可以通过节点/ xxx阻止此节点可在其自己的页面上访问。

 

The Rabbit Hole module provides this feature.

Rabbit Hole is a module that adds the ability to control what should happen when an entity is being viewed at its own page.

Perhaps you have a content type that never should be displayed on its own page, like an image content type that's displayed in a carousel. Rabbit Hole can prevent this node from being accessible on its own page, through node/xxx.

 
 
     
     
12
 
vote

一个选项可能是永远不会发布节点,但具有消费者页面忽略其发布状态。因此,在您的示例中,您的"关于" 视图可能只会忽略"约XXX" 节点的发布状态。由于节点未公布,因此未经授权的用户无法访问它们,因此搜索引擎不应索引它们。

另一个解决方案是使用一个 hook_nodeapi('view') / hook_node_view() 实现发出 drupal_goto() drupal_access_denied() 当未授权的用户访问节点页面时。请注意 hook_nodeapi() / hook_node_view() 在许多情况下使用,而不仅仅是在查看节点页面时。

hook_menu_alter() 也可用于更改节点页的访问回调,以拒绝访问隐藏节点。

最好的可能不会将过滤基于硬编码节点ID,但是在节点上使用自定义字段(使用CCK /字段API或自定义表)或隐藏的列表>节点存储在变量中。< / p>

 

One option may be to never publish the node but have the consumer page ignore their publication status. So in your example, your "About" view may just ignore the publication status of your "About-xxx" nodes. Since the nodes are not published, un-authorized user cannot access them and they shouldn't be indexed by the search engine.

Another solution is to use an hook_nodeapi('view')/hook_node_view() implementation to issue a drupal_goto() or drupal_access_denied() when the node page is visited by an un-authorized user. Be aware that hook_nodeapi()/hook_node_view() are used in many cases and not only when viewing a node page.

hook_menu_alter() can also be used to alter the access callback of the node pages to deny access to the hidden nodes.

The best is probably not to base the filtering on hard-coded node ID but to use either a custom field on the node (using CCK/Field API or a custom table) or a list of hidden nodes stored in a variable.

 
 
   
   
6
 
vote

对于drupal 7,兔孔提供了此功能。

兔孔是一个模块,增加了控制应该是什么的能力 在自己的页面查看EN实体时发生。

这是通过提供多种选项来控制应该发生的操作 当实体在自己的页面上查看时。你有能力 到

  1. 提供访问被拒绝的页面。

  2. 提供未找到页面的页面。

  3. 发出页面重定向到任何路径或外部URL。

  4. 或简单地显示实体(常规行为)。

如何:

启用 rabbit孔节点子模块,然后我们将获取与drupal "/码

 

For Drupal 7, the Rabbit Hole provides this feature.

Rabbit Hole is a module that adds the ability to control what should happen when en entity is being viewed at its own page.

This works by providing multiple options to control what should happen when the entity is being viewed at its own page. You have the ability to

  1. Deliver an access denied page.

  2. Deliver a page not found page.

  3. Issue a page redirect to any path or external url.

  4. Or simply display the entity (regular behavior).

How to :

Enable Rabbit Hole nodes submodule Then we will get config section associated with every form in Drupal CODE

 
 
5
 
vote

解决了。首先我尝试了Pierre Buyle答案,但如果你解开一个节点,它不能被访问,并且那些节点变得无用。在我的情况下,我有父节点,只有子节点(用于管理目的)是要隐藏的子节点,而不是由爬虫索引。我用页面管理器做了什么,使URL重定向(隐藏这些节点到所有用户,而是admin),并且根据这个图案到 http://www.wunderkraut.com/ 1 和爬虫的No-index节点由。即使您没有普形子节点关系,这也会起作用。 链接到教程:

 

Solved. First I tried Pierre Buyle answer, but if you unpublish a node, it can't be propper accessed and those nodes become useless. In my case I have parent and child nodes, only child nodes (for admin purposes) are the ones to be hidden and NOT be indexed by crawlers. What I did it with page manager made a url redirect (hiding these nodes to all users but admin) with a http response according to this tuturial by http://www.wunderkraut.com/1 and no-index nodes by crawlers is handleled by Node no-index module. This will work even if you donxc2xb4t have paret-child node relationship. Link to tutorial:

 
 
3
 
vote

在drupal 7中,它也应该使用 hook_node_access(),这是一个普通的钩子在D7中,可以由所有节点类型的所有模块实现。然后,如果用户正在尝试在他自己的节点/ nid上查看节点,则可以拒绝访问。

您可能还需要实现hook_query_node_access_alter()并在那里添加一个检查,以隐藏搜索结果中的节点。这甚至可能就足够了,你不需要hook_node_access()。它甚至可能在D6中工作,因为您也可以在那里改变查询,但由于查询构建器,它在D7中更容易。

 

In Drupal 7, it should also be possible to use hook_node_access(), this is a normal hook in D7 which can be implemented by all modules for all node types. Then you can deny access if the user is trying to view the node on his own node/nid.

You probably also need to implement hook_query_node_access_alter() and add a check there to hide the node in search results. This might even be enough on it's own and you don't need hook_node_access(). And it might even work in D6 because you can alter the query there too but it's much easier in D7 because of the query builder.

 
 
2
 
vote

简单地将这些节点设置为"未发布" ,然后在视图中添加过滤器"节点发布:否" 。

作为SEO注意,为那些'Ghost'节点创建自定义内容类型是一个很好的做法,并告诉Pathauto给出特定的URL(我使用 /dev/null/[title-raw] ;):即使节点是未发布的,它将有自己的URL别名,所以在你的榜样中,如果你先创建一个关于我们'的Ghost节点',然后查看页面'关于我们',第二个的URL将是 example.com/about-us-0 BOSOS example.com/about-us 已从幽灵中取出(但是,您可以手动设置路径)

 

Simply set those node as 'unpublished', then, in the view add the filter 'node published: no'.

As seo note, is a good practice to create a custom content type for those 'ghost' nodes, and tell pathauto to give them specific urls (i use /dev/null/[title-raw] ;): even if the node is unpublished, it will have its own url alias, so in your example if you create first the ghost node 'about us', and then the view page 'about us', the second's url will be example.com/about-us-0 becose example.com/about-us has been taken from the ghost one (however, you can set the paths manually)

 
 
2
 
vote

您可以使用任何类型的节点访问系统并使用视图3。 您无法在查询设置上禁用SQL重写,因此您可以在此视图上禁用节点访问系统。

 

You could use any kind of node-access system and use views3. There you can't disable sql rewrite on the query settings and so you can disable the node access system on this view.

 
 
2
 
vote

您可以使用规则模块进行。
+创建新规则"查看内容" 事件。
+添加耦合耦合:用户具有角色:匿名,路径有URL别名:节点/ XYZ(这是您想要限制匿名用户的节点)。如果需要,请记住添加"和" 或"或" 条件。
+创建用于重定向到另一页的操作或做其他事情。 这是我为您导出的示例代码

  { "rules_limit_viewing_some_nodes" : {   "LABEL" : "Limit viewing some nodes",   "PLUGIN" : "reaction rule",   "REQUIRES" : [ "rules", "path" ],   "ON" : [ "node_view" ],   "IF" : [      { "user_has_role" : {        "account" : [ "site:current-user" ],        "roles" : { "value" : { "1" : "1" } }       }      },      { "AND" : [] },      { "path_has_alias" : { "source" : "node/28" } }    ],    "DO" : [ { "redirect" : { "url" : "error" } } ]  } }   
 

You can do by using the rules modules.
+ Create new rule with "Content is viewed" event.
+ Add a couple conditions for example: User has role(s) : anonymous, Path has URL alias : node/xyz (this is the node that you want to limit for anonymous user). Remember add "and" or "or" condition if it is needed.
+ Create action for redirect to another page or do something else. This is the sample code that i exported for you

{ "rules_limit_viewing_some_nodes" : {   "LABEL" : "Limit viewing some nodes",   "PLUGIN" : "reaction rule",   "REQUIRES" : [ "rules", "path" ],   "ON" : [ "node_view" ],   "IF" : [      { "user_has_role" : {        "account" : [ "site:current-user" ],        "roles" : { "value" : { "1" : "1" } }       }      },      { "AND" : [] },      { "path_has_alias" : { "source" : "node\/28" } }    ],    "DO" : [ { "redirect" : { "url" : "error" } } ]  } } 
 
 
1
 
vote

我认为最简单的方法来完成你想要的东西是用页面管理器(ctools),真的很简单,你所要做的就是指定要重定向哪个节点(在这种情况下,从一个节点到一个节点另一个)

 

I think the easiest way to accomplish what you want is to use Page manager (Ctools), is really simple to use, all you have to do is to specify which node to redirect where (in this case, from one node to another)

 
 
1
 
vote

内容访问模块将完美地套件。

此模块允许您通过角色和作者管理内容类型的权限。它允许您为每个内容类型进行指定自定义视图,编辑和删除权限。可选地,您可以启用每个内容访问设置,因此您可以自定义每个内容节点的访问。

它也有一个好文件帮助您开始。
 

The Content Access module will suite your requirement perfectly.

This module allows you to manage permissions for content types by role and author. It allows you to specifiy custom view, edit and delete permissions for each content type. Optionally you can enable per content access settings, so you can customize the access for each content node.

It also has a good documentation to help you get started.

 
 
1
 
vote

如果您的"包含内容" 节点需要保持无法进入,则考虑在 webserver "位置= / node / *" 级别上的阻塞/节点/ *。默认拒绝对所有/节点的访问。默认允许访问接收的路径自动路径,如/ pages。

(子目录的基本.htaccess密码也是一种体面来阻止外部爬虫的意外搜索索引。)

永远不会保证通过将来恰好安装的贡献模块或者您尚未完全理解的模块将无法访问节点。 (搜索结果,列表,默认视图,分类类别概述......)

是什么节点。

是您对您很重要的"包含内容" 的隐私?如果是这样,那么...

  1. 所有URL最终将由Google命中的所有内容。

    因为搜索引擎不依赖于单独的链接蜘蛛。他们 还评估浏览器反馈等。没有robot.txt或pathauto, Globalredirect,Rabbithole模块将帮助您安静地睡觉。如果 可以访问该节点,然后它将被索引。也许是你自己的 浏览器/插件。

  2. 重新考虑如果"要包含的内容" 应该是一个节点如果没有人应该将其访问它作为页面

    如果您的"包含内容" 将存储在迷你面板/块/片段/ bean / ...中,那么您就会持续较低的风险,或者曾显示为页面您的自动URL,您尚不了解。 (分类学概述页面,搜索,视图......)

 

If your "included content" nodes need to stay inaccessible, then consider blocking /node/* on the webserver "location = /node/*" level. Default deny access to all /nodes. Default allow access to nodes that received a path-auto path like /pages.

(The basic .htaccess password for subdirectories is a decent way of blocking accidental search indexing by external crawlers, too.)

You can never guarantee that a node will not become accessible via a contributed module that happens to be installed in the future, or one that you do not fully understand yet. (Search results, listings, default views, taxonomy category overview ...)

It is what nodes are for.

Is the privacy of your "included content" that important to you? If so, then ...

  1. Everything that has an URL will eventually be hit by google.

    Because search engines do not rely on link spiders alone. They also evaluate browser feedback etc. No robot.txt, or pathauto, globalredirect, rabbithole module will help you sleep in peace. If the node can be accessed, then it will be indexed. Maybe by your own browser/addons.

  2. Reconsider if "content that is to be included" should really be a node, if noone should access it as a page?

    If your "included content" would be stored inside a mini-panel/block/snippet/bean/..., then you are at a much lower risk of it ever being listed, or ever appear as a page with an automatic URL you don't know about, yet. (taxonomy overview pages, search, views ...)

 
 
0
 
vote

限制节点页面查看模块确实是你想要的。

从模块描述:

您是否曾经使用过您需要发布的幻灯片Nodetype,但不希望使用该节点/ XXX路径自行访问节点?这个模块适合您!

使用此模块,您可以限制对节点的 full 查看模式的访问,因此您无法访问 node/XXX 的节点。

 

The Restrict Node Page View module does exactly what you want.

From the module description:

Have you ever used a slideshow nodetype that you need to be published but don't want the node be accessible by itself using then node/XXX path? This module is for you!

With this module you can restrict access to the node's full view mode, so you can't access the node on node/XXX.

 
 

相关问题

3  如何自动突出显示页面上显示的代码的语法?  ( How to automatically highlight syntax of code displayed on page ) 
我正在开发一个网站,用于从不同的编程语言发布我的代码。我想突出用不同颜色的代码语法。但是,手动这样做是耗时的。 是否有任何模块或方法可以自动执行此操作?严格,它应该以CSS方式完成。 ...

3  核心论坛形式下拉空  ( Core forum form dropdown empty ) 
在D6站点中,当用户进入节点/添加/论坛时,他们发现下拉"论坛" 只是显示"请选择" 但是该菜单中没有任何内容。 PHP错误日志或看门狗中没有任何内容。 我相信用户有正确的权限 - 毕竟,表单确实显示。否则(admin)的下拉列表显示了站点上的所有不同论坛,都是空的,而且没有它不能提交表单。 我已经看到了几乎所有...

7  如何创建“逐步处理”内容类型?  ( How might i create a step by step process content type ) 
我正在考虑为Intranet创建一个过程手册。大多数(全部?)的流程都有一个非常明确的订单,尽管实际顺序可能不时改变。该计划是有主题专家,可能是六十多个左右,输入和更新流程页面。该网站的用户需要能够在与客户交互时快速审查流程,通常面对面。 这是我想到的选项: 培训作者使用有序列表。 pro:最容易的。康科:依靠培...

8  如何创建批量节点创建界面?  ( How can i create a bulk node creation interface ) 
我有一个接口的请求,其中能够在一个屏幕上批量创建具有少量所需字段的节点(例如,标题,日期和节点引用)。 我想象一些可编辑表视图/网格,每个行代表单个节点。 实现这样的东西的最佳方法是什么? ...

1  自动填充风暴发票  ( Auto populating storm invoice ) 
我正在使用 storm 用于一堆变化的功能,并因此有意义要将发票模块作为多零件项目的最后一部分(请参阅上一个所以帖子)。 风暴发票中的所有内容似乎都需要在飞行中输入。我需要发生的是,来自另一个节点的计算字段或视图为发票模块提供价格,自动挖掘某些字段。 完全可能会有风暴发票吗? 附录:如果风暴不是从节点CCK字段创...

20  如何实现双向节点引用?  ( How do i implement two way node references ) 
节点参考模块(CCK的组件)提供了从另一个创建引用一个节点的重要方法。揭露两者之间双向关系的最佳方式是什么?例子如下: 例如,在具有两张票据(节点)A&amp的票式跟踪系统中; b,您可以从票证a - &gt创建节点参考。 b和标记b作为孩子。查看票证时,显示此信息将是微不足道的。但是,当查看票证B时,我还想显示这...

3  如何安装分类系统,表示另一个大容量非内容节点表中的记录?  ( How to install a taxonomy system that represents records in another high volume ) 
这是方案: 关于名人八卦的作家帖子在Drupal网站上张贴了 node (文章)。 我有一个模块,扫描文章并自动基于名人名称在文章中发布的分类系统。 这些分类学"术语" 是基于名人/姓氏的名称,这将是高批量和永久增长的名称。 此名人列表将有各种领域,以呈现名人的深入配置文件 内容节点可以附加多个名人。 名人节点可以...

36  如何删除给定内容类型的所有节点?  ( How to delete all nodes of a given content type ) 
我有几千个特定内容类型的节点。使用Web界面(example.com/admin/content),我一次只能删除大约50。如何快速删除它们? ...

3  加载特定节点修订版视图  ( Loading a specific node revision for view ) 
我试图加载特定的修订版以通过最终用户查看。 Drupal 7. 我在我的.module中有以下内容; function mymodule_node_load($nodes, $types) { if ($nodes[821]->vid != 5928) { $nodes[821] = node_l...

17  是否可以恢复删除的节点?  ( Is it possible to restore a deleted node ) 
虽然保留了修订,但很容易回到先前的节点修订,我想知道是否可以恢复用户真正删除的节点? ...

3  使用有机组时是否可以创建“元论坛”视图?  ( Is it possible to create a meta forum view when using organic groups ) 
我们正在使用有机组的Drupal 6.x。这些组具有非常不同的用户和权限集,每个组都有一个论坛。 我想知道是否有一种"meta-forum" 视图,即用户拥有访问权限的所有不同论坛的一个视图,由组组织。 我看了一下为此配置一个视图,而我能够在所有订阅组中的最新论坛条目的列表中获取内容,我无法获得"论坛类型" 视图我在...

3  如何在分层上订购节点的分类术语?  ( How to order a nodes taxonomy terms hierarchically ) 
是默认顺序排序的节点的分类数组中的术语? 如果不是,那么最有效的方法是什么? ...

1  使用选择表单字段的字段,该字段选择发布节点的组  ( Using a select form field for the field that selects the groups where a node is ) 
用于为有机组模块设置为内容类型的内容类型的节点的表单具有复选框,用于选择发布节点的组;我想使用Select表单字段而不是复选框。 如何更改表单字段? 我已经尝试了drupal.org的一些修补程序,但它们无法正常工作。 我使用了以下代码。 /** * Helper function; Make the gr...

3  通过创建或扩展实体开发幻想体育管理系统是有意义的吗?  ( Does it make sense to develop a fantasy sports management system by creating or ) 
我正在考虑用Drupal建立一个幻想体育管理系统。系统将需要内容,因此请使用标准的Drupal系统处理。但是,它是否有意义(甚至是可能的),以创造代表玩家,团队,联赛,统计线等的新实体? 我在过去(.NET)中建立了这样的系统,我很难围绕与玩家,团队和统计数据相结合的内容节点的想法。有许多字段是每种类型的节点/实体,...

2  如何允许用户确定其他用户可以编辑其内容?  ( How do i allow users to determine which other users can edit their content ) 
我想让用户指定其他用户可以编辑它们的内容。基本上,用户将能够创建一段内容,然后允许它们编辑但没有其他用户可以编辑(接受"管理员" )。这是迄今为止的所有标准的笨蛋的东西。但现在我想让用户给予其他特定用户的权限来编辑他们创建的内容。因此,"创建者" 现在可以分配"编辑器" ,让其他用户编辑原始用户创建的内容。 如果尚不...

3  如何重新填充以保存?  ( How do i get backslashes to save ) 
每次时,我在Drupal站点上键入TextBox(在内容编辑器中,管理页面中,您将命名为;我的意思是任何文本框),它会在它到达模块之前筛选出来代码。 所以我最终输入了这样的东西: 这只是一些内容, n 或像 C: Program Files 无论 并且它在保存时转换为此: 这只是一些内容,n 或像...

1  Drupal 7视图上下文链接编辑节点和字段  ( Drupal 7 views contextual links edit nodes and fields ) 
我使用drupal 7创建了一些视图,并安装了模块上下文链接。它有助于我编辑视图和块。但对于像编辑器等的非管理员等,它将很好,甚至可以使用上下文链接编辑节点或字段。 所以我悬停一个字段应该出现一个编辑链接。 我找不到上下文链接的详细设置。 请告诉我如何设置它。 ...

4  如何在许多论坛中放置一个论坛主题  ( How to place one forum topic in many forums ) 
我有一个使用D6和高级论坛模块创建的论坛系统。我想在所有论坛部分中发布一个特殊的论坛主题,该部分描述了网站规则以及如何使用各种论坛功能。如果可以使用一次出现在所有论坛中的单个节点可以完成这一点,这将是完美的,因为这种注释将包含在一个讨论中。 ...

14  限制预告片仅显示字段的第一个值  ( Limit teaser to display only the first value of a field ) 
我有一个带有图像字段的内容类型。此字段通常将填充0到4个值。默认情况下,此内容类型的预告片输出所有0到4个图像。如何调整预告片只仅显示第一张图像? ...

2  需要一个wysiwyg插件  ( Need a wysiwyg plugin ) 
直到这一点,我需要一个用于Drupal 6的WYSIWYG模块;以下是要求: 易于更改工具栏按钮 能够添加自定义样式 能够上传图像并投入内容 能够上传闪存并渲染内容 能够上传文件并将其显示为下载链接 熟悉WordPress WysiWyg编辑器的人?这是我想要的。 ...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.