Несколько wordpress на одном движке
Столкнулся как-то с вопросом создания мультисайтового/мультидоменного движка. По запросу выдано было много, но сводной информации найдено не было. Тем более что установить хотелось все это на движке wordpress и сразу для нескольких сайтов (доменов) в одну базу.
ryanmcdonnell.com/multiple-blogs-one-wordpress-install-zero-code-changes/ заумное описание установки wordpress для нескольких блогов, но в разные базы.
Итак, начнем по порядку, с учетом всего найденного, с возможными изменениями и дополнениями, проблемами, которые могут возникнуть.
1. Домены в одну папку. Раз движок будет один, то вполне логично, что установлен он должен быть в одной папке основного домена. Остальные домены направляем на эту папку. Как известно, менеджеры хостинга при добавлении нового сайта (домена) разрешают указать данные по папке размещения домена как на автомате по умолчанию, так и вручную. Имеем домены сайт1.ru сайт2.ru сайт3.ru Для основного оставим папку как есть (к примеру /www/сайт1.ru), для остальных при их создании впишем папку не по дефолту, а ту которая прописана для первого основного сайта. Тем самым все сайты (домены) будут искать информацию для запуска и подключения в одной папке на хостинге.
2. Одна база. Различия в работе разных сайтов на движке wordpress в общем, определяется только файлом config.php, т.е. данными о подключении к базе, префиксами таблиц, кодовыми словами и прочее, а вся остальная информация (настройки, темплаты, подключенные плагины) уложена в базе таблиц для каждого сайта. О создании нескольких копий сайтов в одной базе хорошо написано у denis.boltikov.ru/2007/07/13/neskolko-kopij-wordpress-na-odnom-dvizhke-i-baze/
В общем виде добавляемый кусок кода в файл config.php выглядит следующим образом
$prefix = $_SERVER["HTTP_HOST"];
$prefix = str_replace("www.", "", $prefix);
$prefix = str_replace("-", "", $prefix);
$prefix = str_replace(".", "", $prefix);
$table_prefix = $prefix."_" ;
Что получаем? Исходя из запрошенного имени сайта, конфиг подключит таблицы базы с префиксом определяемым по $_SERVER['HTTP_HOST']. Для каждого сайта будет свой комплект таблиц.
3. Robots.txt и sitemap.xml Вот тут уже начинаются трудности. В папке, в общем, должно быть по одному такому файлу. Но у нас то несколько сайтов, у которых вполне определимо разные данные в роботсе и сайтмепе. Что будем делать, чтобы при запросе к определенному сайту нашей группы выдавался нужный файл? Пойдем простым путем по аналогии с базами. Сделаем несколько файлов — robots-site1.ru.txt robots-site2.ru.txt robots-site3.ru.txt и sitemap-site1.ru.xml sitemap-site2.ru.xml sitemap-site3.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 сайта будут отдаваться нужные файлы роботса и сайтмепа. Единственное, что в плагине google sitemap нужно будет указать для каждого блога в их админках соответствующие файлы sitemap.
4. Загрузка картинок. Чтобы не пересекать блоги, особенно при загрузке картинок с одинаковым именем самое лучшее это создать отдельные папки для каждого блога в папке /uploads/. Соответственно в настройках «разное» для кажого блога указать конкретную для него папку загрузки.
5. Нерешенные вопросы или вопросы требующие перекодирования плагинов или прочего. Вотермарк, md5, дополнительное кеширование. У меня во всех этих плагинах конкретно указывается файл, который создает плагин и его размещение. Вариант решения не найден. Больше склоняюсь к необходимости изменения кодов плагинов. Вполне вероятно, что и некоторые другие плагины могут из-за этого отказаться нормально работать. У себя из 20 установленных пока не нашел, но ведь и плагинов то всего не 20, а намного больше. Вариант второй — просто не ставить проблемные плагины.
А как вы видите решение по вопросам последнего пункта. Да, и если будут вопросы и неясности в реализации, то обязательно спрашивайте, а я постараюсь ответить.
Остались вопросы? Статьи в тему:
- Проверка Robots.txt
- MIF менеджер редиректа и тегов
- Плагин flexo-archives виджет
- Забытое старое, но полезное
- Нам не страшен серый волк
Awtor работает, отдыхает, немного пишет.
Отзывов - 31 на "Несколько wordpress на одном движке"
Тема мультисайтовости или создание нескольких блогов на wordpress, оказалась животрепещущая в определенное время. Целые большие куски вашей статьи видел на многих сайтах. Сейчас тема как-то подутихла. Вероятно сказывается расширение возможностей хостинга, да и новые версии wordpress несут в себе некоторый функционал мультисайтовости.
Привет. Странная ситуация, пытаюсь зайти на блог, меня постоянно выкидывает. Сейчас зашел через прокси и все нормально. Может попросить разблокировать ип адрес. Так уже с недели две не могу попасть со своего ип в блог. Что делать?
А можно ли сделать так, что бы у всех блогов была общая база данных, в которой часть таблиц для всех блогов была общей (пользователи), а часть уникальными для каждого блога (записи, страницы, комментарии)?
I'm glad you said it. An interesting look at the solution of the problem wordpress on one engine.
Есть тут некоторые наработки на этот счет. До конца проверю насколько все это правильно работает, только.
Хотя метод до неприличия простой в общем то. Ждите в ближайшее время постараюсь выложить статью.
А что надо сделать, чтобы два сайта работали именно с одной базой (те одним набором таблиц)
Ну чтобы зеркала были?
хотела желание с вами поообщаться поближе, есть ровня вопросов по оформлению и обмену блогами, можно даже поработать
Случайно наткнулся через гугль! Очень интесно ;) По моему мало развернутая мысль, хотелось б более обширно почиатать.
Вообще-то нет. Разрешил. Только рерайт у них вышел неудачный совсем.
По моему у Вас украли эту статью и поместили на другом сайте. Я её уже видела.
Разместил это на своем блоге с ссылкой на ваш сайт. Надеюсь, Вам это какую-нибудь пользу принесет
Stek — люблю сказки, но детские, а не спамные.
Сам долго искал как это реализовать. Очень полезно иногда использовать одну базу. Спасибо
Что-то футер у вас вправо съехал (в опере при разрешении 1024×768)
Привет! Все кто читает этот блог – С Днем Примирения и согласия!
Привет! Читаю не первый день странички. Да вот скорость соединения хромает. Как можно подписаться на вашу RSS-ленту? Хотелось бы читать вас и дальше.
Pirjatno chitat’ na russkom jazyke interesnye i umnye mysli. Uzhe pjat’ let v Anglui zhivu.
)) Все зависит от предложенной суммы, если устроит — передам. Ничего вечного нет.
Хотле бы узнать по поводу вашего домена, awtor.com. Продается ли домен, и если да, то прошу ответить мне на почту, а также отписаться в комментариях — вдргу спам фильтр не пропсутит.
Должен признать, вебмастер зачетно накропал.
В вашем разрезе, применение wodpress — стрельба по воробьям из пушки. Оптимальны вариант — wordpressMU. Он как раз лучше поддерживает работу по субдоменам и папкам.
Предложенный же вариан — больше подходит для управления сайтами на отдельных доменах 2го уровня. В варианте с субдоменами будет просто еще больше извращений.
хочу сделать вышеописанное со своими поддоменами. не получается. во-первых, в какой папке они должны быть? например, у меня основной сайт здесь: root/sitecom/www, в www — весь ВП. домен здесь: root/sitecom/subdomain. так надо?
во-вторых, при создании поддомена в нужной директории или при изменении др. доменов, чтобы они в общую папку обращались, таблицы в БД сами создаются? если да, то после этого при загрузке поддомена в браузере уже должно что-то показыватся, видимо дефолтовая тема ВП?
в-третьих, каким образом я могу управлять поддоменом из общей админки ВП? где там что нужно менять, чтобы показывало нужный поддомен?
Я практически случайно зашел на этот сайт, но задержался тут надолго. Задержался, потому что все очень интересно. Обязательно скажу о вас всем своим друзьям.
Огромное человеческое спасбо!
Обилие интересных статей на вашем сайте меня поражает! Автору – удачи и новых интересных постов!
Kazhdyj raz vozvrawajus’ k vam snova, i ne razocharovyvajus’.
Эээ, а объясните, пожалуйста, а то я что то не совсем в тему въехал, это как?
Спамить не советую. Я не придерживаюсь мнений других — оставлять ссылки и оборачивать их в запреты индекса. Я их просто вырезаю. Ссылок в комментах не будет.
Хороший пост! Подчерпнул для себя много нового и интересного! Пойду ссылку другу дам в аське :)
Автор продолжай в том же духе
Если не заморачиваться, то для г сайтов и так пойдет.
Извините, но коментирование закрыто.