Настройка редиректа для главной страницы

Несколько способов настроить грамотную переадресацию

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

  1. Некоторые хостинги дают возможность сделать переадресацию в настройках. Проверьте свою админку, или напишите в тех поддержку;
  2. Прописать правило перенаправления в htaccess файле;
  3. Прописать перенаправление внутри php файла.

С первым способом разберётесь сами или техподдержка поможет, а мы расскажем про другие два варианта.

Как сделать переадресацию главной страницы в htaccess

Сначала нам нужно знать, какая ссылка является дублем для главной страницы. Вы можете это выяснить, прочитав статью «Как проверить дубли главной страницы». Далее мы рассматриваем переадресацию с адреса nash-sait.com/index.php на nash-sait.com/ и вы можете сами исправить в примерах ссылку index.php на нужную вам.

Также, не забудьте поменять название домена на ваш и если ваш сайт работает через SSL сертификат, то укажите https:// его, вместо http://

В файле .htaccess ищем сперва такую строку включающую переадресацию или прописываем её сами:

RewriteEngine On

Если такая строка уже есть, то повторно её писать не надо. Размещайте правила переадресации под ней.

Вариант 1.

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://nash-sait.com/ [R=301,L]

Сработает только для главной страницы.

Вариант 2.

RewriteCond % ^[A-Z]<3,9> /index.php HTTP/
RewriteRule ^index.php$ http://nash-sait.com/ [R=301,L]]

Сработает только для главной страницы.

Вариант 3.

RewriteRule ^(.*)index.php$ http://nash-sait.com/$1 [R=301,L]

Сработает и для главной, и для всех других индексных страниц. Например, перенаправит с адреса nash-sait.com/folder/index.php на nash-sait.com/folder/

Вариант 4.

RewriteCond %{REQUEST_URI} ^/index.php
RewriteRule ^(.*)$ http://nash-sait.com/ [R=301,L]

Сработает только для главной страницы.

Не нужно прописывать сразу все правила, попробуйте каждое поочерёдно, пока не найдёте то, что работает в вашем случае. Разница между первыми двумя вариантами вообще не существенна. Какой из них сработает, зависит от настроек сервера.

Как сделать в PHP переадресацию главной страницы

Можно прописать PHP перенаправление внутри самого index.php или в любом другом php файле, отвечающем за отображение главной страницы.

**Код должен быть прописан до операторов echo и до отправки кук.

Вариант 5.

if( $_SERVER['REQUEST_URI'] == "/index.php" ) {
    header( "Location: /", TRUE, 301 );
    exit();
}

Сработает только для главной страницы.

Вариант 6.

$ws_uri_parts = explode('?', $_SERVER['REQUEST_URI'], 2);
/*
 * Использовать это условие если нужна переадресация только для главной
 * if($ws_uri_parts[0] == '/index.php')
 *
 * Дальнейшее условие сделает переадресацию и для главной, и для всех других индексных страниц. Например, перенаправит с адреса nash-sait.com/folder/index.php на nash-sait.com/folder/
 */
if(substr($ws_uri_parts[0], -10) == '/index.php')
{
    $ws_uri_protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? 'https://' : 'http://';
    $ws_uri_canonical = $ws_uri_protocol . $_SERVER['HTTP_HOST'] . str_replace('/index.php', '/', $ws_uri_parts[0]);
    $ws_uri_canonical .= '?'.$ws_uri_parts[1]; // Удалить эту строку, если не нужны GET параметры URL адреса
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: ".$ws_uri_canonical );
    exit();
}
вопросительный знак

Лично я пользуюсь собственными наработками и применяю вот этот вариант для переадресации. Там в коде есть пояснения для модификации под разные ситуации, но вы должны знать что делаете и почему именно так.

Эти варианты помогут вам настроить правильную переадресацию для устранения дублей главной страницы. Мы в вас верим! Если что - пишите в комментариях свои вопросы.