• Блог
  • Убираем дубли страниц ч.2

На днях попалась интересная статья про грязные методы конкуренции за места в ТОП поисковых систем. И один из приёмов — подсунуть поисковым системам дубли сайта конкурентов. После чего такой сайт начинает терять позиции. Задача админов и SEO оптимизаторов убрать все дубли. В прошлой статье мы рассмотрели основные дубли и примеры их склейки. В этой статье продолжим.

Не все знают, что главная страница еще может быть доступна по адресу site.ru\index.php или site.ru\index.php?id=1. Я проверил несколько сайтов на MODX и могу это подтвердить. Можете сами проверить — modx.com/index.php. И это ни что иное, как дубли. Тут уже обуждалась эта тема.

Решений этой проблемы несколько. Можно добавить переадресацию в настройки веб-сервера nginx.

if ($request_uri ~* '^/index.php$') {
    return 301 /;
}

Или включить системную настройку request_method_strict, которая по умолчанию выключена. Если её включить, то запросы через параметр ID будут игнорироваться при включённых дружественных URL. Если дружественные URL отключены, то запросы с использованием псевдонима будут игнорироваться.

Или настроить «умную» переадресацию в плагине — если в адресе указан id страницы, то MODX пытается переадресовать на страницу с этим id. Если такой страницы нет, то показывает страницу 404 (должна быть настроена). Если параметра id нет, то плагин переадресует пользователя на главную страницу.

switch ($modx->event->name) {
    case 'OnHandleRequest':
        if (strpos($_SERVER['REQUEST_URI'],'index.php') !== false && $modx->context->get('key') != 'mgr') {
            if (!empty($_GET['id'])) {
                $id = (int)$_GET['id'];
                if (!$modx->getCount('modResource', array('id' => $id, 'published' => 1, 'deleted' => 0))) {
                    $modx->sendErrorPage();
                } 
            } else {
                $id = $modx->getOption('site_start', null, 1);
            }
            $modx->sendRedirect($modx->makeUrl($id),array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
        }
        break;
}

Лично я предпочёл вариант с плагином. Хотя я сильно сомневаюсь, что кто-то решит меня опускать в выдаче. Но лучше делать всё правильно. Можете проверить, что у меня получилось

0   8352

Комментарии ()

  1. Rahim Egamov 28 января 2016 # 0
    Сергей а как вы решили проблему с слешом конце урл
    1. Сергей Шлоков 29 января 2016 # 0
      Примеры можно глянуть тут. Обсуждение этого вопроса в сообществе.

    Вы должны авторизоваться, чтобы оставлять комментарии.

    Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.