Пятница , 26 Апрель 2024
ДомойПубликацииСклейка зеркал, robots.txt и .htaccess

Склейка зеркал, robots.txt и .htaccess

Обидно, когда сайт, созданный с любовью, неожиданно для тебя приобретает дополнительно идиотские www. в начале. У Яндекса это особо распространённая практика: сайт, добавленный через их форму, автоматически снабжается начальным и бесполезным пред-стоящим www.-прицепом. Ну не понимаю я, зачем заставлять пользователя вводить дополнительно 4 символа, одинаковые для 90% сайтов? Давайте тогда уж и http:// тоже сделаем обязательным, или доведём до маразма, который несколько лет назад имел место быть на сайте одного из крупнейших ОпСоСов (сайт beeline.ru выдавал 404 ошибку; работал исключительно www.beeline.ru). Ах, как сложно было додуматься сделать хотя бы редирект на поддомен с www. в начале. Но речь пойдёт не об этом.

Итак, избавляемся от www. и не допускаем его появления для свежесозданного сайта.

office-820390_960_720

Начнём с самой простой ситуации: сайт новый и поисковики про него не знают. Создаём файл robots.txt и «кладём» в корень сайта. Содержимое файла:

User-Agent: *
Disallow:
Host: glavnoe-zerkalo.ru

Как пишет Яндекс, важна очерёдность. Поэтому директиву Host нужно добавлять к группе, начинающейся с директивы User-Agent, непосредственно после Disallow или Allow.

Первая строка соответствует любому поисковому боту, вторая — аналогично Allow: / (т. е. можно индексировать всё), а третья указывает адрес главного зеркала сайта.

Всё красиво, но, как всегда, есть подводные камушки:

Директива ‘Host’ не гарантирует выбор указанного главного зеркала, тем не менее, алгоритм при принятии решения учитывает её с высоким приоритетом.

Теперь совсем интересно. получается, что если боту указать явно на главное зеркало, он может решить, что сам дурак, и установит всё на своё усмотрение. Здесь уже простым robots.txt не обойтись и придётся колдовать внутренние редиректы. Оставим «за бортом» перенаправления на скриптовых и прочих языках (поясняю: html, javascript, php, perl и все прочие идут лесом). Редиректить нужно http-сервером, и в нашем случае это будет Apache. Создаём файл .htaccess (с помощью проводника виндузы это сделать не получится, поэтому открываем блокнот и уже в нём сохраняем как .htaccess. Это файл с пустым именем). D нём пишем следующие строки:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.mysite\.ru$
RewriteRule (.*) http://mysite.ru/$1 [R=permanent,L]

Первая строка включает механизм mod_rewrite, вторая проверяет условие, третья является правилом. В данном случае, во второй строке проверяется, запрашивается ли домен www.mysite.ru, и если это так, то «происходит переброс» (с сохранением пути) на mysite.ru.

Важно! Если подзапрос содержит post-данные, они будут утеряны, поэтому не сто́ит таким образом пытаться отослать данные форм!

Переброс происходит не на стороне сервера, а на стороне пользователя, поэтому адресная строка браузера изменится: http://www.mysite.ru/index.html превратится в http://mysite.ru/index.html.

Если что-то не работает, скорее всего допущена ошибка при наборе инструкций (хостинги без поддержки mod_rewrite мне ещё не встречались, но на всякий случай нужно уточнить у техподдержки, установлен ли данный модуль для Apache).

Если не хочется каждый раз изменять доменное имя, либо используется мультидоменный движок (в одной директории обрабатывается группа сайтов), можно юзать такой вариант:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.+)
RewriteRule (.*) http://%1/$1 [R=permanent,L]

Логика следующая: если запрашивается домен с www., то перенаправить пользователя на домен без www.

После такого «шаманства» должно пройти некоторое время (порой несколько месяцев), прежде чем поисковики обновят информацию о сайте. Так что, если главным зеркалом выбран не тот (под)домен, придётся предпринять меры к устранению, запастись терпением и ждать.

Рейтинг: 0

Автор публикации

2 070
не в сети 12 месяцев

x64 (aka andi)

Комментарии: 2893Публикации: 405Регистрация: 02-04-2009
Так себеНеплохоХорошоЗамечательноСупер! (1 голосов, в среднем: 1,00 из 5)
Загрузка...

12 комментариев

  1. Спасибо за мануал.

    Рейтинг: 1
  2. ооо.. наконец-то нашёл, весь инет перерыл.. думал я что-то накосячил с регистрацией домена. спасибо за помощь

    Рейтинг: 1
  3. Добрый день. Подскажите пожалуйста возникла проблема при склейки зеркал c www и без www:
    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www\.shpulka\.com.ua(.*) [NC]
    RewriteRule ^(.*)$ http://shpulka.com.ua/$1 [R=301,L]
    Сделали файл htaccess и поместили через ftp в корень сайта.
    Залили и проверили перенаправления нет.. основное зеркало без www сайт на движке Vamshop

    Рейтинг: 1
    • Екатерина, здравствуйте!
      Я так понял, что Вы скопировали .htaccess в корень ftp (папку по умолчанию). Корень сайта расположен в той директории, где находится robots.txt — http://ваш.сайт/robots.txt
      Попробуйте добавить код в .htaccess, который расположен в этой же папке. Только его нужно вставить сразу после строки с директивой RewriteEngine On

      Рейтинг: 1
  4. из-за ошибки разработчика, он не правильно указал host в файле robot.txt, указал урл вв обще от левого сайта , в итоге сайты склеились и начались проблемы в директ, сейчас уже все исправили, скажите как долго ждать когда яндекс все у себя исправит.
    Спасибо за внимание

    Рейтинг: 1
    • Антон, здравствуйте.
      У меня сайты за месяц клеились. Люди, которые профессионально занимаются, говорят что до 2 месяцев бывает. С Гуглом всё проще и быстрее, там динамическая выдача, подхватывает очень быстро.

      Рейтинг: 1
  5. Андрей, наверное, сейчас это уже не особо актуальная информация про файл .htaccess ? Ведь и в Гугуле и в Яндекче в вебмастере можно указать главное зеркало…или всё ж стоит и в файле .htaccess прописать даже сейчас? Что скажешь?

    Рейтинг: 2
    • Елена, .htaccess будет полезен и для пользователей. Ссылки же с других ресурсов на сайт есть, но часть с www начинается, часть нет. Искать все линки и просить хозяев поменять — вряд ли хорошая идея. А с .htaccess не важно, куда заходит пользователь, он гарантированно попадёт на запрашиваемую страницу (если она не удалена, конечно), либо сразу, либо через перенаправление, которого не заметит.
      Даже больше скажу, в роботсе можно Host не использовать, редиректить только с помощью .htaccess, боты автоматом переклеят smile

      Рейтинг: 2
    • c www и без www может и можно обойтись без .htaccess, а вот при склейке http и https ни как не обойтись. Там придется явно указать основное зеркало.

      Рейтинг: 0
      • Владимир, здравствуйте!
        Не совсем понял сей момент. Чем принципиально https/http отличается от www/без? (:
        Можно на уровне движка производить редирект, или прописать канониклы в странице, а все ссылки выводить в полном виде — https://

        Рейтинг: 0
  6. Насколько я понимаю http и https для поисковиков это два разных сайта и без 301 редиректа их не склеить.
    А вот c www и без www можно просто в панеле вебмастера на поисковике указать главное зеркало и 301 редирект может и не понадобиться.

    Рейтинг: 0
    • Сайт с www и без него может отдавать разные сайты. Строго говоря, поисковики обязаны ничего не додумывать и не склеивать подобные адреса. Собственно, по http/https тоже может отдаваться совершенно разное содержимое. И даже с/без слеша на конце. Но в целом Вы правы: должны не то же самое, что делают.

      Рейтинг: 0

Оставить комментарий

Политика конфиденциальности

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

Принять