Многосайтовость на wordpress
Пятница, 25 сентября 2009 г.
Просмотров: 817
Подписаться на комментарии по 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. Там подход
несколько иной, позволяющий для каждого сайта использовать отдельный
конфиг файл. А это значит, что теоретически можно под одной админкой
объединить даже сайты с разных баз данных.
Также в процессе поиска решения наткнулся на статью с официального сайта, где собраны различные реализации для нескольких проектов – от блогохостингов до целых блого-ферм.
Источник
Комментариев: 2
Здравствуйте!
Я сделала все, как здесь написано. Поддомены переадресовываются в одну папку, но блоги не устанавливаются по отдельности. Стоит мне установит блог с одного адреса, на всех остальных отображается то же самое.
Подскажите, в чем может быть причина и как сделать так, чтобы каждый блог был отдельный?
спасибо
]]>
Думаю у вас какието проблемы с файлами конфига 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 и тогда по идее должно все заработать.
Так нужно будет проделать для каждого сайта отдельно.
Я пробовал данный метод и у меня все работало.