it-swarm-eu.dev

Jak skrýt uzly, ke kterým by neměli mít přímý přístup uživatelé a vyhledávače?

Zjistil jsem, že jsou časy, kdy mám uzel, který jednoduše obsahuje obsah, který bude zobrazen někde jinde, ale neměl by být zobrazen přímo. To znamená, že nikdo by nikdy neměl jít do uzlu/1234, ale obsah v uzlu 1234 by měl být zobrazen někde jinde. Například vytvořím stránku o obsahu s kartami pomocí zobrazení. Takže existují stránky „O mně“, „O nás“ a „O nich“. Všechny jsou zobrazeny na jedné stránce s kartami pomocí Zobrazení. Nechci, aby se lidé dostali přímo do uzlu „O nás“, protože pak by neviděli karty pro ostatní stránky. Zároveň nechci, aby Google dával lidem přímý odkaz na tento uzel, chci omezit přístup, aby se k němu uživatelé mohli dostat pouze prostřednictvím zobrazení (tj. Karty).

Musím tedy omezit přístup k uzlu, odebrat jej z výsledků vyhledávání Drupal) a ujistit se, že jej Google nezachytí. Nějaké návrhy?

51
Chaulky

To mi připadá jako dobrý případ použití modul Panels , protože můžete vytvářet panely, které přepíší stránky uzlů, a můžete nastavit kontext panelu způsobem, který by měl uživatelům zaručit, že uvidí požadovanou stránku. aby je viděli, a pravidla přístupu pro stránky panelu, pokud je potřebujete. Další podrobnosti viz tento příspěvek na d.o.

28
coderintherye

Tuto funkci poskytuje modul Rabbit Hole .

Králičí díra je modul, který přidává schopnost řídit, co by se mělo stát, když se entita prohlíží na své vlastní stránce.

Možná máte typ obsahu, který by se nikdy neměl zobrazovat na jeho vlastní stránce, například typ obsahu obrázku, který se zobrazuje v karuselu. Králičí díra může zabránit přístupu tohoto uzlu na jeho vlastní stránce prostřednictvím uzlu/xxx.

33
Pierre Buyle

Jednou z možností může být nikdy publikovat uzel, ale nechat spotřebitelskou stránku ignorovat jejich stav publikování. Ve vašem příkladu tedy může zobrazení „About“ pouze ignorovat stav publikace vašich uzlů About-xxx. Protože uzly nejsou publikovány, neautorizovaný uživatel k nim nemá přístup a neměly by být indexovány pomocí vyhledávače.

Dalším řešením je použití hook_nodeapi('view') / hook_node_view() implementace k vydání drupal_goto() nebo drupal_access_denied() , když stránku uzlu navštíví neautorizovaný uživatel. Uvědomte si, že hook_nodeapi() / hook_node_view() se používá v mnoha případech a nejen při prohlížení stránky uzlů.

hook_menu_alter() lze také použít ke změně zpětného zpětného volání přístupových stránek uzlů k odepření přístupu k skrytým uzly.

Nejlepší není pravděpodobně založit filtrování na pevně kódovaném ID uzlu, ale použít buď vlastní pole v uzlu (pomocí CCK/Field API nebo vlastní tabulky) nebo seznam skrytých skrytých uzly ložené v proměnné .

13
Pierre Buyle

Pro Drupal 7) poskytuje Králičí díra tuto funkci.

Králičí díra je modul, který přidává schopnost řídit, co by se mělo stát, když se entita prohlíží na své vlastní stránce.

Funguje to tak, že poskytuje více možností, jak řídit, co by se mělo stát, když se entita zobrazuje na své vlastní stránce. Máte schopnost

  1. Zobrazte stránku s odepřeným přístupem.

  2. Zobrazte stránku nenalezenou.

  3. Zadejte stránku přesměrování na libovolnou cestu nebo externí adresu URL.

  4. Nebo jednoduše zobrazte entitu (normální chování).

Jak :

Povolit králičí uzlové uzly submodul Pak dostaneme konfigurační sekci spojenou s každým formulářem v Drupal KÓD

7
niksmac

Vyřešeno. Nejprve jsem vyzkoušel odpověď Pierre Buyle, ale pokud zrušíte publikování uzlu, nelze k němu přistupovat a tyto uzly jsou zbytečné. V mém případě mám nadřazené a podřízené uzly, pouze podřízené uzly (pro účely administrace) jsou ty, které mají být skryty a prolézací moduly NENÍ indexovány. To, co jsem udělal pomocí Správce stránek, provedlo přesměrování adresy URL (skrytí těchto uzlů pro všechny uživatele kromě administrátora) s odezvou http podle tohoto tuturialu http://www.wunderkraut.com/1 a uzly bez indexu prolézacími moduly jsou zpracovány pomocí modul uzlu bez index . Toto bude fungovat, i když nemáte vztah uzel paret-child. Odkaz na kurz:

6
pinueve

V Drupal 7) by mělo být také možné použít hook_node_access () , jedná se o normální háček v D7, který lze implementovat všemi moduly pro všechny typy uzlů. Poté můžete přístup odepřít, pokud se uživatel pokouší zobrazit uzel na svém vlastním uzlu/uzlu.

Pravděpodobně budete také muset implementovat hook_query_node_access_alter () a přidat kontrolu tam, abyste skryli uzel ve výsledcích vyhledávání. To by samo o sobě mohlo stačit a nepotřebujete hook_node_access (). A může to dokonce fungovat v D6, protože tam můžete změnit dotaz, ale je to mnohem jednodušší v D7 kvůli tvůrci dotazů.

4
Berdir

Jednoduše nastavte tento uzel jako 'nepublikovaný', pak do pohledu přidejte filtr 'publikovaný uzel: ne'.

Jako seo na vědomí, je dobrou praxí vytvořit vlastní typ obsahu pro tyto „duchové“ uzly a řekněte pathauto, aby jim dal konkrétní adresy URL (používám /dev/null/[title-raw];): i když je uzel nezveřejněn, bude mít svůj vlastní alias URL, takže pokud ve vašem příkladu vytvoříte nejprve duchový uzel „o nás“, a poté stránku pro zobrazení „o nás“, druhá adresa URL bude být example.com/about-us-0 becose example.com/about-us byl převzat z ducha (ale můžete nastavit cesty ručně)

3
Strae

To lze provést pomocí modulů pravidel.
+ Vytvořit nové pravidlo s událostí „Obsah je zobrazen“.
+ Přidejte například pár podmínek: Uživatel má role: anonymní, Cesta má alias URL: uzel/xyz (to je uzel, který chcete omezit pro anonymního uživatele). Pokud je to nutné, nezapomeňte přidat podmínku „a“ nebo „nebo“.
+ Vytvořit akci pro přesměrování na jinou stránku nebo udělat něco jiného. Toto je ukázkový kód, který jsem pro vás exportoval

{ "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" } } ]
 }
}
3
Stone Vo

Můžete použít jakýkoli druh systému pro přístup k uzlům a použít pohledy3. Tam nemůžete zakázat přepisování sql v nastavení dotazu, takže můžete v tomto pohledu deaktivovat přístupový systém uzlů.

3
Daniel Wehner

Myslím, že nejjednodušší způsob, jak dosáhnout toho, co chcete, je použít Správce stránek (Ctools), je opravdu jednoduchý na používání, vše, co musíte udělat, je určit, který uzel přesměrovat kam (v tomto případě z jednoho uzlu na druhý)

2
Nicolas_ii

Modul Content Access dokonale splní váš požadavek.

Tento modul umožňuje spravovat oprávnění pro typy obsahu podle role a autora. Umožňuje určit vlastní zobrazení, upravit a odstranit oprávnění pro každý typ obsahu. Volitelně můžete povolit nastavení přístupu k obsahu, takže můžete přizpůsobit přístup pro každý uzel obsahu.

Má také dobrá dokumentace , která vám pomůže začít.

2
AjitS

Pokud vaše uzly „zahrnutého obsahu“ musí zůstat nepřístupné, zvažte blokování/uzel/* na webserver "location =/node/*" level. Výchozí odepření přístupu do všech/uzlů. Výchozí povolit přístup k uzlům, které přijaly cestu-auto cesta jako/stránky.

(Základní heslo .htaccess pro podadresáře je slušný způsob blokování náhodného indexování vyhledávání pomocí externích prolézacích modulů.)

Nikdy nemůžete zaručit, že uzel nebude přístupný prostřednictvím přispěného modulu, který bude nainstalován v budoucnu, nebo modulem, kterému ještě plně nerozumíte. (Výsledky vyhledávání, výpisy, výchozí zobrazení, přehled kategorií taxonomie ...)

To jsou uzly, pro které jsou.

Je pro vás důležité soukromí vašeho „zahrnutého obsahu“? Pokud ano, pak ...

  1. Vše, co má adresu URL, bude nakonec zasaženo google.

    Protože vyhledávače se nespoléhají pouze na odkazové pavouky. Vyhodnocují také zpětnou vazbu prohlížeče atd. Žádný robot.txt nebo pathauto, globalredirect, rabbithole modul vám nepomůže spát v klidu. Pokud je uzel přístupný, bude indexován. Možná pomocí vlastního prohlížeče/doplňků.

  2. Zvažte, zda by „obsah, který má být zahrnut“, měl být skutečně uzlem, , pokud by k němu nikdo neměl přistupovat jako na stránku ?

    Pokud by váš „zahrnutý obsah“ byl uložen uvnitř minipanela/bloku/úryvku/fazole/..., pak jste vystaveni mnohem nižšímu riziku, že bude někdy uveden, nebo se někdy objeví jako stránka s automatickou adresou URL, o které ještě nevíte . (stránky přehledu taxonomie, vyhledávání, zobrazení ...)

2
user18099

Modul Omezit Node Zobrazení stránky provede přesně to, co chcete.

Z popisu modulu:

Už jste někdy použili nodetyp prezentace, který musíte zveřejnit, ale nechcete, aby byl uzel přístupný sám pomocí cesty k uzlu/XXX? Tento modul je pro vás!

Pomocí tohoto modulu můžete omezit přístup do režimu zobrazení full uzlu, takže nemůžete získat přístup k uzlu na node/XXX.

0
Jdrupal