Многосайтовость на wordpress
Пятница, 25 сентября 2009 г.
Просмотров: 35352
Подписаться на комментарии по RSS
Нашел в интернете очень полезную статью о том как сделать на одном движке от wordpress несколько сайтов, при этом использовав 1 базу данных.
Это полезно, если у хостера имеются определенные ограничения на количество БД.
есть экономное решение – использовать одну установленную систему Wordpress. Первый случай может пригодиться, когда
у вас есть несколько блогов на хостинге и вы просто добавляете новые проекты, то есть не требуется обновление старых, доработка плагинов и т.п. Они как работали, так и продолжают работать. Второй вариант лучше использовать, если вы изначально планируете создавать сетку блогов или просто несколько простых проектов. Ведь часто кроме ограничения на количество БД у хостеров есть лимиты на занимаемое дисковое пространство – смысл тратить его на одни и те же файлы, плагины.
Кроме того, вы получите хорошую
экономию по времени – обновлять плагины можно будет в одном месте, хотя
не уверен насчет дальнейшей их активации по отдельности. На самом деле
процесс достаточно прост. Используется трюк, как и в прошлой статье,
поэтому можете ее прочитать для общего развития.
Первым делом необходимо настроить домены блогов
дабы они ссылались в один и тот же каталог. Внимание, я рассказываю как
все работает у моего хостера, поэтому не могу на 100% гарантировать
такой же алгоритм у вас. Если возникнут вопросы, проще всего обратиться
в их службу поддержки (собственно, я так и поступал). Так вот,
допустим, есть 3 сайта – site1.ru, site2.ru, site3.ru. При создании их
на хостинге, скорее всего, для каждого будет выделена отдельная папка
на FTP. Суть метода – направить все домены в одну (главную директорию).
Для этого используются алиасы. В админке hqhost, например это выглядит приблизительно так:
Для каждого сайта (домена) редактируем
алиасы – для второстепенных (site2.ru, site3.ru) убираем и добавляем их
к основному (site1.ru). Пожалуй, повторюсь, если вы мало что поняли в
моих словах – лучше обратиться в тех. поддержку хостера, там должны
помочь
Итак, в результате этой процедуры
каждый сайт будет «смотреть» в одну директорию – главного блога. Именно
туда мы заливаем все исходники 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. Там подход
несколько иной, позволяющий для каждого сайта использовать отдельный
конфиг файл. А это значит, что теоретически можно под одной админкой
объединить даже сайты с разных баз данных.
Также в процессе поиска решения наткнулся на статью с официального сайта, где собраны различные реализации для нескольких проектов – от блогохостингов до целых блого-ферм.
Источник
Комментариев: 8
Здравствуйте!
Я сделала все, как здесь написано. Поддомены переадресовываются в одну папку, но блоги не устанавливаются по отдельности. Стоит мне установит блог с одного адреса, на всех остальных отображается то же самое.
Подскажите, в чем может быть причина и как сделать так, чтобы каждый блог был отдельный?
спасибо
Думаю у вас какието проблемы с файлами конфига 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 и тогда по идее должно все заработать.
Так нужно будет проделать для каждого сайта отдельно.
Я пробовал данный метод и у меня все работало.
а нельзя ли поступить проще и при инсталляции WordPress указать разные индексы баз данных?
мой вам совет: пропускайте код вашей статьи через фильтр html_entity_decode(), а то я не сразу вкурил зачем мне в конфигах стили))
Эдгар, спасибо за совет)), но раньше статья была в нормально читаемом виде)), видимо после некоторых изменений на сайте стало отображаться так.
Здравствуйте!
Подскажите, пожалуйста, если не трудно Я новичок.
Недавно создала свой сайт с женской тематикой на Вордпресс (там пока пара статей).
Сейчас знакомый хочет, чтоб я ему создала простенький сайт про мебель. Вот как мне правильно сделать, чтоб сначала под своими правами заходить в консоль, а потом по окончанию - все права ему передать? Я его должна зарегистрировать под своим сайтом, но как нового пользователя? или как вообще такое делается? Просто Вордпресс меня постоянно на мой сайт перебрасывает, и я не могу понять, как мне второй-то сайт сделать? Буду очень признательна за ответ
Марина мой вам совет, если вы не понимаете сути переделки, лучше сделайте 2 отдельных сайта, вам будет проще, тем более вы даете доступ другому человеку. Тут нужно понимать важный момент, что если ваш знакомый сделает что то не так, то оба ваши сайта полягут, так как файлы общие и если проблема у одного сайта, то точно такая же и у другого, а вы не будите знать что сделал ваш знакомый и почему сайты не работают. Этот метод подходит когда у вас ограниченное место на диске у хостера и когда вы делаете сайты для себя!.
В вашем случае нужно создать отдельную директорию, загрузить в нее вторую копию wordpress и для второго сайта настроить домен в эту созданную директорию, и не мудрить с аллиасами и многосайтовостью.
Спасибо большое!