Как создать зеркало сайта на WordPress (плагин)

28 августа 2009 г.

Как создать зеркало сайта на WordPress (плагин)

Все-таки я окончательно решил уходить от доменов RU.

А потому встала задача сделать зеркала сайтов, работающих на WordPress, да таким образом, чтобы использовать одну и ту же базу данных, не меняя ее структуры и не добавляя новых таблиц.

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

  1. Сделать абсолютную копию сайта (его зеркало) таким образом, чтобы сайт работал одновременно с двух адресов.
  2. На старом домене в robots.txt добавить директиву host, указывающую на новый адрес сайта.
  3. Ждать, ждать, ждать - когда придет робот-зеркальщик, когда его кореш индексирующий бот познакомится с зеркалом сайта, и когда проиндексированное зеркало, наконец, попадет в серп Яндекса.
  4. Вот теперь можно будет ставить 301-й редирект со старого адреса на новый.

Вы наверняка знаете, что WordPress жестко привязывает к сайту его адрес, т.е. если попытаться тупо скопировать файлы движка, находящиеся на фтп, в новый сайт и оставить то же самое подключение к БД, то при заходе по новому адресу сайта произойдет автоматический редирект на старый адрес, поскольку он и указан в настройках.

Чтобы обойти этот редирект (кстати, в более ранних версиях WordPress его не было), я создал малюсенький плагин в пару десятков строк кода, который и позволяет выполнить первый их четырех вышеуказанных пунктов.

Но, прежде чем дать ссылку на плагин, я хочу рассказать, как с ним работать.

Установка и настройка плагина

  1. Нет необходимости создавать на фтп-сервере копию сайта, т.е. будет использоваться всего одна инсталляция WordPress. Вместо этого необходимо создать зеркало домена (также их называют псевдонимом или алиасом). Т.е. новый домен необходимо сделать зеркалом старого.

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

    Настройка зеркала домена в ISPmanager

  2. Распаковать плагин из архива и в файле AA-DomainMirror.php отредактировать следующие 2 строки:
    1
    2
    $main     = "domain.ru";  // главный домен
    $mirror   = "domain.com"; // зеркало
  3. Закинуть папку AA-DomainMirror на сайт и активировать плагин через админку. Обратите внимание, что название папки лучше не менять, AA- в названии используется для того, чтобы плагин инициировался первым.
  4. После этого следует походить по новому адресу сайта и удостовериться, что все ссылки содержат правильный домен. В зависимости от используемых вами плагинов может случиться так, что некоторые ссылки будут содержать старый домен. Поэтому вам самим придется разбираться с такими плагинами.

Скачать плагин

Проверял работу плагина на WordPress 2.7, думаю, что и на 2.8 и на некоторых ранних версиях тоже будет работать.

Надеюсь, кому-то этот плагин пригодится =)

Комментарии (34): »

  1. Отличный плагин! Спасибо! Обязательно возьму на вооружение.
    Вопрос не совсем в тему. А если просто меняешь хостинг, до достаточно просто перекопировать файлы? Ну и отредактировать подключение к базе данных. Или есть где то жесткая привязка к путям старого хостинга?

    @
  2. Переноса достаточно. Привязки к хостингу нет.

  3. ну перенес ты сайт на другой домен, а ссылки то не перенесешь, я так понял ты домены РУшки продливать не собираешься, таким образом плакали естественные ссылки

  4. В моем случае это не так важно.

  5. Да вроде одну строчку в базе данных поменять достаточно. По крайней мере я так поступал, когда покупал готовый блог на вордпресс, который делался на денвере.

    @
  6. тогда если есть на них ТИЦ, то я с удовольствием у тебя бы их купил ))))

  7. В результате старый адрес будет перенаправлять на новый. А этого нужно избежать до индексации зеркала Яндексом.

  8. Я имею ввиду залить на новом хосте файлы и базу, и в ней поменять url (получится копия), а в старом отредактировать только robots.txt, и дальше по твоей инструкции.

    @
  9. Яндекс редирект понимает - тИЦ переносит, домены склеивает. Понял на практике.

  10. В твоем случае при публикации новых постов придется делать это 2 раза: и на новом домене, и на старом. А в моем случае только один раз.

  11. Если бы он нормально понимал, то никакой host в robots.txt не требовался бы, и не было бы гемора с переносами.

  12. Понятно, этого я не учел.

    @
  13. Ну не знаю, у меня проблем не возникло. Правда склейка произошла только через пару месяцев после установки редиректа.

  14. Я в свой прошлый перенос сразу ставил редирект и Яндекс проиндексил сайт по новому адресу только через 4 месяца. Поэтому в этот раз я решил сначала дождаться индексации зеркала и только потом поставлю редирект. Посмотрим насколько быстрее пройдет этот процесс, если, конечно, это будет быстрее =)

  15. У меня не совсем такая задача, но уже с ног сбился решая: Необходимо создать зеркало блога на вордпресе для экспериментов. Всё происходит у одного хостера, на основном домене (основной блог) и поддомене (зеркало). На поисковики плевать, просто нужен тестовый ресурс для обкатки разных небезопасных модификаций. mySql позволяет штатными инструментами реплицировать данные в режиме master->slave, но это годится только для разных серверов. У меня, разумеется, mySql-сервер один и мне бы хотелось иметь на нём две идентичные БД с одностороней репликацией между ними (по сути тоже мастер и слейв). Одна прикручена к основному движку блога, вторая — к зеркалу. Само-собой, данные должны реплицироваться по часам, например, раз в сутки.

    Может подскажете чего?

  16. Я когда сайты переношу, тупо блокнотом (Edit Plus 2.x) открываю дамп базы и перебиваю все url на новые, там кстати некоторые плагины требуют full path типа home/user/public_html… , их тоже перебивать нужно, если на новый хост сайт тащить!

  17. за плагин спасибо, но у меня вопрос, если сделать так:
    сначала склеить доменны, подождать когда перетекут пузомерки, этим временем переносить основной сайт но запретить его к индексации, наращивать на этот домен беки, после завершения всех робот по переносу проверить не эроры и только после этого открыть доступ, после индексации начать удалять страницы с индекса старого сайта.. первый месяц тИЦ не слетит а потом только богу известно что Платон сделает ))))
    -
    собственно если можна несколько коментов к этой схеме

  18. Схема вполне рабочая, когда-то я сам так же переносил. Только с Яндексом на это уходит очень много времени.

    И еще я не делал этого:

    и только после этого открыть доступ, после индексации начать удалять страницы с индекса старого сайта

    Непонятно, что это, и зачем.

  19. Хороший плагин, спасибо автору. Но замучил вопрос, почему бросаешь домены RU? С чем связано, спали тему.

    @
  20. произойдет автоматический редирект на старый адрес, поскольку он и указан в настройках.

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

  21. Ты не понял сути.

  22. А я просто делаю дамп базы и в текстовом редакторе изменяю доменные имена. Заливаю все файлы на новый домен, импортирую базу и вуаля…

  23. У меня та же ситуация, я тоже начал миграцию на .com и .net, спасибо за совет - очень помог. Кстати а можете посоветовать где скачать книгу по WordPress в формате PDF чтобы там были описания плагинов, конфигурации, советов по безопасности, оптимизации и т.д.?

  24. Если вы указывали новый домен как зеркало в панельке isp старого домена, то как вы создавали этот самый новый домен ? Добавляли в той же панельке новый домен (создавались все настройки для нового сайта) а потом его же указывали псевдонимом для старого? Или как то подругому?
    Смущает куда пихать новый сайт, если добавлять только псевдоним, или как будут работать сайты если в isp один и тот же сайт добавлен как псевдоним и как отдельный сайт

    @
  25. Новый домен создавать не обязательно, достаточно просто указать для него NS-сервера хостинга у регистратора.

  26. Dimox, похоже, я что-то пропустила… А почему Вы уходите с зоны .ru? А я, наоборот, вот только сегодня новый домен регистрировала, как только не упражнялась в филологии, чтобы найти незанятый вариант ru. Мне казалось, что эта зона привычнее для русских пользователей, и они, и Яша её лучше ищут. Хотя я это где-то вычитала, может это и не так?
    Поделитесь, пожалуйста, может, правда, уйти в com или su какое-нибудь, там лучше?

    @
  27. А, пардон, прочитала старый пост. Так дело только в сканах паспорта?
    Или есть ещё причина, про которую я не знаю?

    @
  28. Из-за скана и возможного в перспективе контроля государством доходов, получаемых на ру-доменах.

  29. Ага, поняла. Спасибо за ответ.

    @
  30. 31
    sup3rstar

    Если я правильно понял, то на новом зеркале сайта, необходимо установить WP и данный плагин?

    @
  31. Можно WP установить на новом домене, тогда алиас создавать не нужно.

  32. А как задать зеркало в панели управления CPanel, не подскажите?
    А то я там нашел полностью функцию редиректа, это-то или нет?

  33. Нет, редирект для этого не трогайте. Делается следующим образом:

    1. Зайдите на страницу добавления нового домена.
    2. В поле “Имя нового домена” укажите имя домена “зеркала”.
    3. В поле “Корневой каталог документов” укажите ту папку, где находится главный домен.

    Все =)

Присоединяйтесь к обсуждению!

Отправляя кoммeнтapий, Вы автоматически принимаете правила кoммeнтиpoвaния на этом блоге.

Правила кoммeнтиpoвaния на блоге dimox.name:

  1. Первый кoммeнтapий всегда проходит премодерацию.
  2. В поле "URL блога" можно указывать только ссылку на главную страницу вашего блога. Ссылки на прочие веб-ресурсы (в том числе блоги/сплоги, созданные не для людей) будут удалены.
  3. Запрещается использовать в качестве имени комментатора слоганы/названия сайтов, рекламные фразы, ключевые и т.п. слова. В случае несоблюдения этого условия имя изменяется по усмотрению владельца блога. Просьба указывать нормальное имя или ник.
  4. Весьма вероятно, что короткий и неинформативный кoммeнтapий вида "Спасибо!", "Интересная статья", будет удален. Исключение составляют знакомые автору блога комментаторы.

Подписаться, не комментируя

Предыдущие из рубрики