Многосайтовость на wordpress

Рубрика: Новости -> Скрипты -> wordpress
Пятница, 25 сентября 2009 г.
Просмотров: 817
Подписаться на комментарии по RSS

Нашел в интернете очень полезную статью о том как сделать на одном движке от wordpress несколько сайтов, при этом использовав 1 базу данных.

wordpressЭто полезно, если у хостера имеются определенные ограничения на количество БД.

есть экономное решение – использовать одну установленную систему Wordpress. Первый случай может пригодиться, когда

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

Кроме того, вы получите хорошую

экономию по времени – обновлять плагины можно будет в одном месте, хотя

не уверен насчет дальнейшей их активации по отдельности. На самом деле

процесс достаточно прост. Используется трюк, как и в прошлой статье,

поэтому можете ее прочитать для общего развития.

Первым делом необходимо настроить домены блогов

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

все работает у моего хостера, поэтому не могу на 100% гарантировать

такой же алгоритм у вас. Если возникнут вопросы, проще всего обратиться

в их службу поддержки (собственно, я так и поступал). Так вот,

допустим, есть 3 сайта – site1.ru, site2.ru, site3.ru. При создании их

на хостинге, скорее всего, для каждого будет выделена отдельная папка

на FTP. Суть метода – направить все домены в одну (главную директорию).

Для этого используются алиасы. В админке hqhost, например это выглядит приблизительно так:

алиасы для доменов

Для каждого сайта (домена) редактируем

алиасы – для второстепенных (site2.ru, site3.ru) убираем и добавляем их

к основному (site1.ru). Пожалуй, повторюсь, если вы мало что поняли в

моих словах – лучше обратиться в тех. поддержку хостера, там должны

помочьsmile

Итак, в результате этой процедуры

каждый сайт будет «смотреть» в одну директорию – главного блога. Именно

туда мы заливаем все исходники Wordpress, плагины, шаблоны. После этого

заходим в файл wp-config.php, где находим строку $table_prefix 

= ‘wp_’; Она задает префикс для таблиц блога, нужно сделать так, чтобы

генерировались разные префиксы в зависимости от домена. Для этого

используем код:

$prefix = $_SERVER["HTTP_HOST"];
$prefix = str_replace("www.", "", $prefix);
$prefix = str_replace("-", "", $prefix);
$prefix = str_replace(".", "", $prefix);
$table_prefix = $prefix."_" ;

В итоге вместо wp_ получим префикс site1ru_, site2ru_ и т.п. Можете в последней строке добавить любые символы, например:

$table_prefix = "wp".$prefix."_" ; // получим wpsite1ru_

Теперь каждый раз, когда вы будете

заходить по тому или иному домену, вы будете видеть тот сайт (блог),

который ему соответствует. Поскольку все настройки системы хранятся в

БД, то настраивать каждый проект придется по отдельности. Это же

касается шаблонов – загружаете все в одну папку, а для блогов выбираете

разные.

Работаться в данном методе мне здорово помогла статья в проекте Блог Awtor . Автор пошел еще дальше и дополнил данную установку важными деталями. Речь идет о файлах Robots.txt и sitemap.xml - ведь

для каждого сайта они должны быть разные. Для решения этой проблемы

создается несколько файлов с идентичными названиями (структурой)

robots-site1.ru.txt, robots-site2.ru.txt и sitemap-site1.ru.xml,

sitemap-site2.ru.xml. Далее файл .htaccess дополняем конструкцией:

RewriteCond %{REQUEST_FILENAME} /robots.txt$ [NC]
RewriteRule ^ /robots-%{HTTP_HOST}.txt [L]
RewriteCond %{REQUEST_FILENAME} /sitemap.xml$ [NC]
RewriteRule ^ /sitemap-%{HTTP_HOST}.xml [L]

Теперь при заходе с разных URL адресов будут выбираться нужные файлы.

Еще автор советует для загрузки

изображений создавать разные папки в uploads, которые потому указывать

в настройках блога. Также он замечает, что в процессе работы возникают

нерешенные проблемы с некоторыми плагинами: watermark, md5,

дополнительное кеширование. В принципе, в 95% случаев, думаю, без них

можно обойтись, поэтому данный момент не столь критичен. Если

создавать, например, простые сателлиты, то хватит и стандартного набора

плагинов.

Вот, кстати, нашел в сети еще один вариант

реализации нескольких сайтов на одном движке wordpress. Там подход

несколько иной, позволяющий для каждого сайта использовать отдельный

конфиг файл. А это значит, что теоретически можно под одной админкой

объединить даже сайты с разных баз данных.

Также в процессе поиска решения наткнулся на статью с официального сайта, где собраны различные реализации для нескольких проектов – от блогохостингов до целых блого-ферм.

Источник

Комментариев: 2

  1. 2010-06-25 в 21:05:08 | Ольга (анонимно)

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

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

    Подскажите, в чем может быть причина и как сделать так, чтобы каждый блог был отдельный?

    спасибо

  2. 2010-06-27 в 01:47:23 | TruLander
    ]]>]]>

    Думаю у вас какието проблемы с файлами конфига wp-config.php

    можно попробовать сделать отдельный конфиг, для отдельного сайта.

    Для этого нужно в файле .htaccess дописать строки

    RewriteCond %{REQUEST_FILENAME} /wp-config.php$ [NC]

    RewriteRule ^ /wp-config-%{HTTP_HOST}.php [L]

    а сам файл wp-config.php оставить стандартный.

    Далее нужно установить блог повторно, чтобы сохранить настройки в файл wp-config.php, далее после завершения установки сайт не будет работать, а будет предлогать установить блог по новой, так как настроек конфига для этого сайта еще нету.

    Чтобы сайт зараюботал нужно файл wp-config.php переименовать в

    wp-config-ваш-сайт.php и тогда по идее должно все заработать.

    Так нужно будет проделать для каждого сайта отдельно.

    Я пробовал данный метод и у меня все работало.

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

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

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



grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

(обязательно)