Вы здесь

Помогите создать 301 редирект

0

Здравствуйте!

xxandeadxx, давненько помогал мне с одним сайтом.

на сайте несколько категорий и все они представлены в URL. Одна из категорий может быть "нулевой", для этого ей присвоили значение

***IS_NULL***

но сейчас в поиске яндекса стали показываться страницы содержащие этот самый

***IS_NULL***

Помогите составить 301 редирект с адреса:

http://МОЙСАЙТ/cat1/cat2/cat3/***IS_NULL***

на

http://МОЙСАЙТ/cat1/cat2/cat3
Версия Drupal: 
7.x
Вопрос задан 30.11.2015 - 21:50

Если в URL не указана cat4 (http://МОЙСАЙТ/cat1/cat2/cat3), то вместо значения категории cat4 подставляется

***IS_NULL***

а яндекс откуда-то нашел такие страницы, хотя ссылок на них нет:

http://МОЙСАЙТ/cat1/cat2/cat3/***IS_NULL***

вот и надо сделать редирект на такое:
http://МОЙСАЙТ/cat1/cat2/cat3

я пробовал в модуле сделать так:

if ($view->args[0] && $view->args[1] && $view->args[2] == '***IS_NULL***') {
  drupal_goto('cat1/' . $view->args[0] . '/' . $view->args[1]);
}

но тогда получается циклический редирект, т.к. во вьюсе в cat4 автоматически подставляется IS_NULL

Комментарий оставлен 01.12.2015 - 08:12

Я пробовал делать так:

RewriteRule ^cat1/(*)/(*)/***IS_NULL*** http://мойсайт/cat1/$1/$2 [R=301,L]

получаю Internal Server Error

пробовал экранировать эти звездочки

RewriteRule ^cat1/(*)/(*)/\*\*\*IS_NULL\*\*\* http://мойсайт/cat1/$1/$2 [R=301,L]

всё равно Internal Server Error

Комментарий оставлен 01.12.2015 - 08:23

Ответы

0
function MODULE_init(){
    $arg = arg();
    $last_key = key(array_slice($arg, -1, 1, TRUE));

    if ($arg[$last_key] == '***IS_NULL***') {
        unset($arg[$last_key]);

        drupal_goto(implode('/', $arg), array(), 301);
    }
}
Ответ дан 02.12.2015 - 09:17
0
Ответ дан 01.12.2015 - 09:23

Установил, попробовал, не получилось.

шаблон:

cat1/*/*/***IS_NULL***

цель:

cat1 (но нужно чтобы параметры cat2 и cat3 из урл тоже передавались, т.е. цель должна быть cat1/cat2/cat3)
Комментарий оставлен 01.12.2015 - 11:55