Скрытие полного отображения узла и URL-адреса


Это очень похоже на Как скрыть узлы, к которым не следует обращаться напрямую от пользователей и поисковых систем?

Я хотел бы:

  • Не имеют прямого доступа к определенным узлам по полному URL-адресу (т.Е. в узле/1234 или его псевдониме), так как они используются в представлении
  • Убедитесь, что они не индексируются в поисковых системах

Мои вопросы таковы:

  • Имеет ли маркировка узла как "неопубликованного" какую-либо сторону эффекты? кроме просмотра узла (при условии, что вы администратор) и просмотра узла как неопубликованного
  • Пометка узла как опубликованного дает 401, когда его просматривают (по полному URL-адресу) анонимные пользователи. Страница все еще просматривается? Есть ли способ перенаправить 401 и не пострадать с точки зрения SEO?

РЕДАКТИРОВАТЬ: Использование Drupal 7.

Спасибо!

Author: Community, 2011-11-18

5 answers

Не публикация узла означает, что у вас не может быть незавершенных работ, или вам нужен другой способ пометить их как не готовые для веб-сайта. Я вижу в этом определенный недостаток.

Вы имеете в виду 403 или 404 вместо 401? Если страница приведет к 404, то она не будет сканироваться или индексироваться. У Google нет способа отличить случай "невидимого узла" от простого старого плохого URL-адреса. 401 должно происходить только в случае авторизации. 403 может привести к тому, что страница будет обновлена позже дата. Вы никогда не захотите перенаправлять с одного из них, так как для этого требуется 301 или 302.

Для другого способа сделать это в устаревшем проекте вы можете задать псевдоним пути

no-view/[nid]

, А затем используйте

function MYMODULE_init ()
{
    $path = drupal_get_path_alias(request_uri());

    if (strpos($path, "no-view/") !== false) {
        drupal_not_found();
        exit;
    }
}

В пользовательском модуле. Вы можете подключить аналогичную функциональность через API узла, если хотите избежать добавления функции hook_init().

Двигаться вперед, используя сущности, предложенные @nicoz, - лучшая идея.

 1
Author: mpdonadio, 2011-11-18 20:38:45

Одним из самых больших изменений на уровне архитектуры Drupal 7 является введение сущностей в качестве абстракции для контента. Старые времена попыток втиснуть все в узлы закончились. Короче говоря, вы получаете все удобства узлов без накладных расходов и ненужного кода (и в вашем случае архитектурную проблему "сокрытия" узлов от пользователей, искателей).

Drupal Commerce использует их для продуктов. Это позволяет самим продуктам быть недоступными для конечных пользователей пользователи, но прикрепленные к продукту, отображаются и отображаются для просмотра и покупки конечным пользователем.

Используйте сущность Конструкторский комплект (ECK). Это даст вам приятный пользовательский интерфейс для создания ваших сущностей, а затем просто используйте представления для их отображения конечному пользователю.

 3
Author: , 2011-11-18 17:01:52

Модуль Внутренних узлов должен делать именно то, что вы хотите, хотя я сам его не тестировал.

Моя единственная проблема в том, что вы не можете редактировать скрываемые узлы, но над этим ведется работа ( Разрешить пользователям редактировать/удалять узлы, которые они не могут просматривать)

 1
Author: exstral, 2012-02-28 15:50:30

Если вы нигде на своем сайте не ссылаетесь на эти узлы, то поисковые системы даже не должны их находить.

Более надежным подходом было бы Предложение Бердира использовать hook_node_access.

 0
Author: uwe, 2017-04-13 12:47:02

Модуль Кроличья нора отлично подходит для этого, вы можете скрыть доступные узлы или перенаправить их на другую целевую страницу один раз. Вы можете выбрать роли "администратора", чтобы получить к ним обычный доступ, а все остальные подчиняются этому общему правилу для каждого типа контента, но также изменяйте это на основе узла за узлом.

 0
Author: Chandeep Khosa, 2015-01-09 16:41:59