Создание мультисайта на MODX REVO
Лучше поздно, чем никогда. Как и обещал https://modx.pro/help/5194/ пишу про создание мультисайта на MODX REVO. Выкладываю в блог Готовые решения, т.к. в статье есть чуть-чуть кода.
Смысл всей затеи — упростить поддержку сайтов.
Под поддержкой понимаются любые действия связанные с работой сайта:
— размещение контента
— технические доработки сайта (программирование, верстка)
— консультирование модераторов, сеошников и т.д.
— бэкапы и восстановление информации
Кроме того, для упрощения работы необходимо внедрить стандарты, чтобы упростить рутину. Звучит громко, но на самом деле все просто — по «узким» моментам единожды принимаем какое-то решение и дальше просто поступаем по образцу, чтобы не тратить время на изобретение велосипедов. По принятому решению пишем короткую заметку в Евернот, чтобы потом когда понадобится можно было быстро найти, на чем основывалось решение.
В таких «стандартах» у меня:
— ресайз картинок с примерами кода
— настройки галереи fancybox с примерами кода
— создание файловых архивов
— названия чанков, например почти везде у меня есть чанки HEADER.site1, FOOTER.site1, ASIDE.site1 (в названии используем название контекста).
— и т.д. и т.п.
Т.е. единожды продумываем тонкости и решаем, что будем делать именно так и никак иначе. В дальнейшем это позволит избежать бардака и существенно ускорит процесс переноса существующих сайтов в мультисайт или разработку новых сайтов.
Плюсы и особенности «мультисайта»:
Важный момент, на который нужно обратить внимание по каждому сайту:
Не навредить SEO! Поскольку «вылететь» из поисковой выдачи Яндекса и Гугла — это плохо. Один из сайтов «вылетел», пришлось в срочном порядке восстанавливать все адреса + дополнительно настраивать контекстную рекламу, поскольку у владельца сайта это был основной канал коммуникации с клиентами.
Про мультисайты на modx не так много статей, когда я все это задумал, мне казалось, что или все слишком очевидно или просто особо этим никто не занимается.
При поиске через гугль нашел это:
_http://www.wiseguydigital.com/blog/2010/how-to-build-multi-site-modx-installations
_http://modx.ws/blog/uroki-modx-revolution/multisajt-na-modx-revolution.html
_http://www.belafontecode.com/modx-revolution-hosting-multiple-domains/
— в статьях описано примерно одно и тоже.
Как сделал я:
1. Сайты на виртуальном сервере, все домены ссылаются в одну папку, таким образом прекрасно работает плагин от Василия Наумкина bezumkin.ru/sections/tips_and_tricks/2439/, который переадресует каждый домен на свой контекст.
upd. Переадресация идет, если имя домена совпадает с настройкой контекста http_host.
2. Соответственно для каждого домена сделан отдельный контекст. В настройках контекста прописаны обязательные настройки:
site_start – ID главной страницы сайта (этот параметр написан ввиде цифры в скобках в конце каждого документа в меню Resources)
base_url – установите этот параметр “/” (без кавычек)
http_host – укажите в этом параметре домен вашего дополнительного сайта “имя.ru” (если речь идет о домейне третьего уровня, то в этом параметре необходимо указать имя.имя.ru)
site_url – укажите в этом параметре полный адрес вашего дополнительного сайта “http://имя.ru/” (можете указать с www)
— без них работать не будет.
Плюс все нужные индивидуальные настройки для каждого домена, напрмер «страница 404», «статус сайта», «использовать вложенные url». И настройки почты. Я чаще всего использую ЯндексПочту для домена, все прекрасно работает. Для каждого домена задаем отдельные почтовые ящики.
3. По настройке htaccess с «www» и «без www» создал топик в разделе Работа modx.pro/work/5786-configure-htaccess-to-multisite/. Помог Василий Наумкин.
Те записи, которые есть в примере файла htaccess дистрибутива modx для доменов и с «www» и «без www» не работают, сайт пишет про циклическую ошибку (комент Ильи Уткина в вышеуказанном топике про работу).
Для сайтов «с www» нужно прописать отдельное правило для этого сайта. А там, где ниже идёт правило для редиректа всех www на без-www нужно добавить условие не редиректить тот сайт.
Итого:
4. Сделал отдельный каталог со спецдиректориями по названию доменов для их индивидуальных файлов, изображений, шаблонов и т.д.
Путь от корня мультисайта индивидуально папки получился «s/site1/», «s/site2/» и т.д. для каждого сайта. В эти папки положил важные для SEO подпапки от каждого сайта, например:
«s/site1/assets/image»
«s/site1/assets/gallery»
«s/site1/assets/files»
«s/site1/assets/cashe»
Папки image, gallery, files и т.д. — из Modx Evo, там хранится проиндексированный поисковиками контент, но для того, чтобы этот контент открывался по прежнему адресу нужно из url убрать адрес спецдиректории для каждого домена, например «s/site1/».
5. Для того, чтобы вырезать из URL пути «s/site1/», «s/site2/» Василий Наумкин написал плагин и привел пример записи в htacess.
Он работает для всех контекстов и берёт список вырезаемых url из настройки контекст urlCut. Т.е. если надо вырезать кусок из url «s/site1/», то в настройках контекста добавляем запись «urlCut».
Затем нужно научить Apache2 загружать такие файлы из спецдиректории, прописываем в htaccess:
Соответственно для каждого домена нужно прописать похожее правило.
Мы сохранили прежние пути к проиндексированным в поисковых системах файлам, хотя физически она находятся в отдельных спецдиректориях. Таким образом не вредим SEO.
Для примера, картинка у нас физически находится по адресу:
site1.ru/s/site1/assets/image/image.jpg
Но открывается она по URL
site1.ru/assets/image/image.jpg
Т.е. после добавления сайта в мультисайт адреса изображений остались прежними.
По специфичным моментам настройки каждого отдельного домена в мультисайте вроде все.
Тонкости:
Я создал один контекст для образца, со всеми индивидуальными настройками которые мне нужны для каждого домена и потом просто копировал его, чтобы каждый раз не прописывать отдельные настройки для каждого контекста. Кроме того в этом образцовом контексте созданы ресурсы 404, sitemap и т.д., они тоже копируются при копировании контекста — это удобно.
Для переноса, в мультисайте настраивается тестовый домен, контент существующего сайта переносился «вручную». После того, как все перенесли и убедились, что все ок, в настройках контекста меняли имя домена на нужное и только потом переадресовывали домен на папку мультисайта.
Настройка прав и админки для юзеров с урезанными правами — стандартная, никаких особенностей, связанных с мультисайтом там нет. Просто настраиваем нужный доступ к контексту и юзер открывает админку по адресу его сайта «site1/manager/» и в дереве ресурсов отображается только его контекст.
Для каждого отдельного контекста создана отдельная категория, соответственно все чанки, шаблоны, доп.поля, плагины складываем туда, чтобы «не в одну кучу». При необходимости, для удобства разработки, можно настроить отдельного юзера с доступом в эту категорию, чтобы другие категории не мешались. Я так не делал, поскольку во многих случаях просто копировал код с «соседнего» сайта, например чанк вывода новости со всеми прописанными полями (заголовок и длинный заголовок, ресайз картинок, альты и тайтлы к картинке, вывод дат и т.д.). Это и упрощает разработку и позволяет не забыть важные моменты, т.е. не надо каждый раз вспоминать «что же нужно прописать».
Для удобства, в названиях чанков, шаблонов, доп.полей и т.д. используем названия контекста, чтобы было понятно, к чему он относится. Выше я писал про HEADER.site1.
Настроил ежедневный бэкап сайта по крону. Но своим клиентам раз в две недели автоматически рассылаю письма, что «создан полный бэкап сайта».
Неочевидный для меня момент — настройка шаблона тикетов по умолчанию, сначала пробовал вставлять этот шаблон в настройках контекста, ничего не получилось. В итоге настройка нашлась непосредственно в разделе с тикетами.
Стандартные компоненты, сниппеты и плагины прекрасно работают в мультисайте.
Для настройки меню сайта от корня достаточно указать необходимый контекст [[pdoMenu? &context=`site1`]]
Выводы:
Вставлять в мультисайт какие-то сложные сайты (интернет-магазины и т.д.) наверно не стоит.
Но что-то проще:
— лендинги;
— сайты без какого-либо сложного функционала, например сайт организации с лентой новостей, каталогом товаров и услуг — можно и по временным затратам встроить в мультисайт проще чем создать отдельный новый сайт + сильно экономим время на обслуживании.
Новые сайты я однозначно буду запускать в мультисайте. Если вдруг их нужно быть вынести в отдельный сайт — это очень просто, копируем полностью сайт, удаляем оттуда ненужные контексты и папки категорий.
Разработка сильно упростилась, поскольку все лежит в одном месте и можно копировать код кусками с работающих сайтов.
Наверняка я что-то упустил, если есть какие-то вопросы, спрашивайте.
Смысл всей затеи — упростить поддержку сайтов.
Под поддержкой понимаются любые действия связанные с работой сайта:
— размещение контента
— технические доработки сайта (программирование, верстка)
— консультирование модераторов, сеошников и т.д.
— бэкапы и восстановление информации
Кроме того, для упрощения работы необходимо внедрить стандарты, чтобы упростить рутину. Звучит громко, но на самом деле все просто — по «узким» моментам единожды принимаем какое-то решение и дальше просто поступаем по образцу, чтобы не тратить время на изобретение велосипедов. По принятому решению пишем короткую заметку в Евернот, чтобы потом когда понадобится можно было быстро найти, на чем основывалось решение.
В таких «стандартах» у меня:
— ресайз картинок с примерами кода
— настройки галереи fancybox с примерами кода
— создание файловых архивов
— названия чанков, например почти везде у меня есть чанки HEADER.site1, FOOTER.site1, ASIDE.site1 (в названии используем название контекста).
— и т.д. и т.п.
Т.е. единожды продумываем тонкости и решаем, что будем делать именно так и никак иначе. В дальнейшем это позволит избежать бардака и существенно ускорит процесс переноса существующих сайтов в мультисайт или разработку новых сайтов.
Плюсы и особенности «мультисайта»:
- у админа единый интерфейс управления всеми сайтами
- модераторы заходят в админки своих сайтов по своим адресам, т.е. site1.ru/manager/, site2.ru/manager/ и т.д. и со своей настроенной админкой
- похожий интерфейс бекэнда у все сайтов, т.е. можно отвечать на вопросы модераторов и сеошников просто по памяти без компьютера и интернета под рукой.
- меньше времени на обновление программного обеспечения сайтов, т.к. один раз для мультисайта, а не для каждого отдельно.
- во время переноса, некоторые сайты были переверстаны на bootstrap, соответственно потом, в случае доработок сильно экономим на верстке + сайт получается адаптированным для смартфонов (гугль утверждает, что это важно).
- в редакторе TinyMCE при вставке гиперссылки из редактора отображаются/ищутся все ресурсы мультисайта, т.е. но ограничивается текущим контекстом.
- не нашел как спрятать шаблоны не относящиеся к текущему контексту.
Важный момент, на который нужно обратить внимание по каждому сайту:
Не навредить SEO! Поскольку «вылететь» из поисковой выдачи Яндекса и Гугла — это плохо. Один из сайтов «вылетел», пришлось в срочном порядке восстанавливать все адреса + дополнительно настраивать контекстную рекламу, поскольку у владельца сайта это был основной канал коммуникации с клиентами.
Про мультисайты на modx не так много статей, когда я все это задумал, мне казалось, что или все слишком очевидно или просто особо этим никто не занимается.
При поиске через гугль нашел это:
_http://www.wiseguydigital.com/blog/2010/how-to-build-multi-site-modx-installations
_http://modx.ws/blog/uroki-modx-revolution/multisajt-na-modx-revolution.html
_http://www.belafontecode.com/modx-revolution-hosting-multiple-domains/
— в статьях описано примерно одно и тоже.
Как сделал я:
1. Сайты на виртуальном сервере, все домены ссылаются в одну папку, таким образом прекрасно работает плагин от Василия Наумкина bezumkin.ru/sections/tips_and_tricks/2439/, который переадресует каждый домен на свой контекст.
upd. Переадресация идет, если имя домена совпадает с настройкой контекста http_host.
2. Соответственно для каждого домена сделан отдельный контекст. В настройках контекста прописаны обязательные настройки:
site_start – ID главной страницы сайта (этот параметр написан ввиде цифры в скобках в конце каждого документа в меню Resources)
base_url – установите этот параметр “/” (без кавычек)
http_host – укажите в этом параметре домен вашего дополнительного сайта “имя.ru” (если речь идет о домейне третьего уровня, то в этом параметре необходимо указать имя.имя.ru)
site_url – укажите в этом параметре полный адрес вашего дополнительного сайта “http://имя.ru/” (можете указать с www)
— без них работать не будет.
Плюс все нужные индивидуальные настройки для каждого домена, напрмер «страница 404», «статус сайта», «использовать вложенные url». И настройки почты. Я чаще всего использую ЯндексПочту для домена, все прекрасно работает. Для каждого домена задаем отдельные почтовые ящики.
3. По настройке htaccess с «www» и «без www» создал топик в разделе Работа modx.pro/work/5786-configure-htaccess-to-multisite/. Помог Василий Наумкин.
Те записи, которые есть в примере файла htaccess дистрибутива modx для доменов и с «www» и «без www» не работают, сайт пишет про циклическую ошибку (комент Ильи Уткина в вышеуказанном топике про работу).
Для сайтов «с www» нужно прописать отдельное правило для этого сайта. А там, где ниже идёт правило для редиректа всех www на без-www нужно добавить условие не редиректить тот сайт.
Итого:
# Редирект site1.ru -> www.site1.ru
RewriteCond %{HTTP_HOST} ^site1.ru\.ru [NC]
RewriteRule ^/?(.*) http://www.site1.ru/$1 [R=301,L]
# Редирект всех остальных www -> non-www, кроме site1.ru
RewriteCond %{HTTP_HOST} !^www\.site1\.ru [NC]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
4. Сделал отдельный каталог со спецдиректориями по названию доменов для их индивидуальных файлов, изображений, шаблонов и т.д.
Путь от корня мультисайта индивидуально папки получился «s/site1/», «s/site2/» и т.д. для каждого сайта. В эти папки положил важные для SEO подпапки от каждого сайта, например:
«s/site1/assets/image»
«s/site1/assets/gallery»
«s/site1/assets/files»
«s/site1/assets/cashe»
Папки image, gallery, files и т.д. — из Modx Evo, там хранится проиндексированный поисковиками контент, но для того, чтобы этот контент открывался по прежнему адресу нужно из url убрать адрес спецдиректории для каждого домена, например «s/site1/».
5. Для того, чтобы вырезать из URL пути «s/site1/», «s/site2/» Василий Наумкин написал плагин и привел пример записи в htacess.
<?php
if ($modx->event->name != 'OnWebPagePrerender') {continue;}
$urlCut = $modx->getOption('urlCut');
if (empty($urlCut)) {
return;
}
$urls = array_map('trim', explode(',', $urlCut));
foreach ($urls as $url) {
$modx->resource->_output = preg_replace("#(/|){$url}#i", '/', $modx->resource->_output);
}
Он работает для всех контекстов и берёт список вырезаемых url из настройки контекст urlCut. Т.е. если надо вырезать кусок из url «s/site1/», то в настройках контекста добавляем запись «urlCut».
Затем нужно научить Apache2 загружать такие файлы из спецдиректории, прописываем в htaccess:
# Работаем только для site1 и только для ненайденных файлов c указанными расширениями
RewriteCond %{HTTP_HOST} ^www\.site1\.ru [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)\.(png|gif|jpg|jpeg|xls|doc|pdf)$ /s/med55/$0 [L,NC]
Соответственно для каждого домена нужно прописать похожее правило.
Мы сохранили прежние пути к проиндексированным в поисковых системах файлам, хотя физически она находятся в отдельных спецдиректориях. Таким образом не вредим SEO.
Для примера, картинка у нас физически находится по адресу:
site1.ru/s/site1/assets/image/image.jpg
Но открывается она по URL
site1.ru/assets/image/image.jpg
Т.е. после добавления сайта в мультисайт адреса изображений остались прежними.
По специфичным моментам настройки каждого отдельного домена в мультисайте вроде все.
Тонкости:
Я создал один контекст для образца, со всеми индивидуальными настройками которые мне нужны для каждого домена и потом просто копировал его, чтобы каждый раз не прописывать отдельные настройки для каждого контекста. Кроме того в этом образцовом контексте созданы ресурсы 404, sitemap и т.д., они тоже копируются при копировании контекста — это удобно.
Для переноса, в мультисайте настраивается тестовый домен, контент существующего сайта переносился «вручную». После того, как все перенесли и убедились, что все ок, в настройках контекста меняли имя домена на нужное и только потом переадресовывали домен на папку мультисайта.
Настройка прав и админки для юзеров с урезанными правами — стандартная, никаких особенностей, связанных с мультисайтом там нет. Просто настраиваем нужный доступ к контексту и юзер открывает админку по адресу его сайта «site1/manager/» и в дереве ресурсов отображается только его контекст.
Для каждого отдельного контекста создана отдельная категория, соответственно все чанки, шаблоны, доп.поля, плагины складываем туда, чтобы «не в одну кучу». При необходимости, для удобства разработки, можно настроить отдельного юзера с доступом в эту категорию, чтобы другие категории не мешались. Я так не делал, поскольку во многих случаях просто копировал код с «соседнего» сайта, например чанк вывода новости со всеми прописанными полями (заголовок и длинный заголовок, ресайз картинок, альты и тайтлы к картинке, вывод дат и т.д.). Это и упрощает разработку и позволяет не забыть важные моменты, т.е. не надо каждый раз вспоминать «что же нужно прописать».
Для удобства, в названиях чанков, шаблонов, доп.полей и т.д. используем названия контекста, чтобы было понятно, к чему он относится. Выше я писал про HEADER.site1.
Настроил ежедневный бэкап сайта по крону. Но своим клиентам раз в две недели автоматически рассылаю письма, что «создан полный бэкап сайта».
Неочевидный для меня момент — настройка шаблона тикетов по умолчанию, сначала пробовал вставлять этот шаблон в настройках контекста, ничего не получилось. В итоге настройка нашлась непосредственно в разделе с тикетами.
Стандартные компоненты, сниппеты и плагины прекрасно работают в мультисайте.
Для настройки меню сайта от корня достаточно указать необходимый контекст [[pdoMenu? &context=`site1`]]
Выводы:
Вставлять в мультисайт какие-то сложные сайты (интернет-магазины и т.д.) наверно не стоит.
Но что-то проще:
— лендинги;
— сайты без какого-либо сложного функционала, например сайт организации с лентой новостей, каталогом товаров и услуг — можно и по временным затратам встроить в мультисайт проще чем создать отдельный новый сайт + сильно экономим время на обслуживании.
Новые сайты я однозначно буду запускать в мультисайте. Если вдруг их нужно быть вынести в отдельный сайт — это очень просто, копируем полностью сайт, удаляем оттуда ненужные контексты и папки категорий.
Разработка сильно упростилась, поскольку все лежит в одном месте и можно копировать код кусками с работающих сайтов.
Наверняка я что-то упустил, если есть какие-то вопросы, спрашивайте.
Комментарии: 104
А если есть несколько однотипных, но мультиязычных сайтов, где языки находятся в подпапках /ru/, /en/?
Как бы вы организовали работу с несколькими мультиязычными сайтами в одной админке?
Как бы вы организовали работу с несколькими мультиязычными сайтами в одной админке?
Ссылку в топике https://bezumkin.ru/sections/tips_and_tricks/2439/ смотрели?
Первый пример там как раз для /ru/, /en/.
Мультиязычный сайт у меня всего один, на там все тупо — просто отдельные ресурсы с отдельными шаблонами и контентом на английском языке — просто переведенный каталог товаров. И шапке сайта ссылки «ru»|«en». Ну т.е. нет никакого автоматического выбора по языку браузера и т.д.
Первый пример там как раз для /ru/, /en/.
Мультиязычный сайт у меня всего один, на там все тупо — просто отдельные ресурсы с отдельными шаблонами и контентом на английском языке — просто переведенный каталог товаров. И шапке сайта ссылки «ru»|«en». Ну т.е. нет никакого автоматического выбора по языку браузера и т.д.
А можно делать всё тоже самое только без новых доменов?
Т е создать каталог, а выводить его как отдельный сайт.
Т е создать каталог, а выводить его как отдельный сайт.
lux-line.ru/ — сайт 3 версии
банально сниппетом
[[!swland?
&ru=`русская`
&en=`английская`
&cn=`китайская`
]]
$url=explode('/', $_SERVER[REQUEST_URI]);
$ru = !empty($ru)? $ru: '';
$en = !empty($en)? $en: '';
$cn = !empty($cn)? $cn: '';
$land=$url[1];
if($land=='en'){
return $en;
}else if($land=='cn'){
return $cn;
}else{
return $ru;
}
банально сниппетом
[[!swland?
&ru=`русская`
&en=`английская`
&cn=`китайская`
]]
$url=explode('/', $_SERVER[REQUEST_URI]);
$ru = !empty($ru)? $ru: '';
$en = !empty($en)? $en: '';
$cn = !empty($cn)? $cn: '';
$land=$url[1];
if($land=='en'){
return $en;
}else if($land=='cn'){
return $cn;
}else{
return $ru;
}
Зачем Апач? я думал им уже не пользуются.
Очень много где пользуются, особенно на shared хостингах. Да и на VPS панели управления, типа ISP Manager, под него заточены.
Гораздо проще дать человеку .htaccess, чем объяснять, что такое Nginx и как писать для него правила.
Гораздо проще дать человеку .htaccess, чем объяснять, что такое Nginx и как писать для него правила.
Спасибо за проделанную работу!
в редакторе TinyMCE при вставке гиперссылки из редактора отображаются/ищутся все ресурсы мультисайта, т.е. но ограничивается текущим контекстом.мне кажется эти параметры придется хардкорно править в «ядре»
не нашел как спрятать шаблоны не относящиеся к текущему контексту.
я например меняла сортировку шаблонов в выпадающем списке
Да, похоже только хардкор.
А как на счет быстродействия? если почистить кеш то он почистится у всех сайтов сразу
Отдельные сайты в мультисайте относительно небольшие — до 1000 страниц со всеми новостями. Сервер довольно мощный. Кэш картинок при сбросе общего кэша сайта не сбрасывается. Я тормозов не замечаю.
Моё мнение на этот счёт однозначное — сайт не должен жить за счёт кэша.
При очистке на modx.pro, первый раз главная грузится так:
То есть, очистки кэша никто не замечает — как это и должно быть.
При очистке на modx.pro, первый раз главная грузится так:
total time: 2.2554 s query time: 0.4618 s queries: 233Потом вот так:
total time: 0.3539 s query time: 0.0480 s queries: 137
То есть, очистки кэша никто не замечает — как это и должно быть.
Добрый день! Мне как раз необходимо переустановить SEO-цели на мультисайте. Вижу такую картину:
onclick="yaCounter[[++[[*context_key]].yaKey]].reachGoal('something'); return true;"
При попытке изменения содержимого, оно меняется сразу на 2 сайтах, что не есть хорошо. Если не сложно, можете направить меня на путь решения данного вопроса(где именно мне искать поле для ввода СЕО-цели под конкретный сайт)? Спасибо.
Скорее всего, в настройках каждого контекста.
А, нет, похоже, разработчик не знал, что так можно. Так что ищите в настройках системы
ничего не нашел такого, что могло бы помочь(
Если я правильно понял вопрос...Как вариант: вывести весь код в отдельные чанки, а вместо кода прописать [[$ya.[[++context_key]]]]. Чанки соответственно будут называться по ключу контекстов, например [[$ya.ru]], [[$ya.en]]…
После этого меняешь содержимое только нужного чанка и код меняется только на нужном сайте.
спасибо за информацию) попробую
Установил modx по адресу d1.com, настроил контексты, сделал d2.com алиасом d1.com, прикрутил плагин, вбиваю d2 — перебрасывает на d1. Где может быть ошибка?
?
Добрый вечер!
Получилось ли у кого-нибудь сделать авторизацию у каждого контекста по его же site_url?
site1.site.ru/manager
site2.site.ru/manager
site3.site.ru/manager
Выдает ошибку 404
Работает только site.ru/manager… можно авторизоваться по основному url… но хотелось бы по другому решить…
Комментирование строчки не помогло:
if ($modx->event->name != 'OnHandleRequest' || $modx->context->key == 'mgr') {return;}
Получилось ли у кого-нибудь сделать авторизацию у каждого контекста по его же site_url?
site1.site.ru/manager
site2.site.ru/manager
site3.site.ru/manager
Выдает ошибку 404
Работает только site.ru/manager… можно авторизоваться по основному url… но хотелось бы по другому решить…
Комментирование строчки не помогло:
if ($modx->event->name != 'OnHandleRequest' || $modx->context->key == 'mgr') {return;}
На всех сайтах (у меня) админка доступна по siteNN.site.tld/manager/, т.е. с любого поддомена.
Проверяйте настройки контекстов.
Проверяйте настройки контекстов.
base_url - /
default_context - site1.site.ru
default_media_source - 8
default_template - 5
http_host - site1.site.ru
site_name - Название сайта site1.site.ru
site_start - 2
site_url - http://site1.site.ru
Плагин взят от сюда bezumkin.ru/sections/tips_and_tricks/2439/ (второй для поддоменов). На сайте site1.site.ru скопированы с основного — .htaccess config.core.php index.phpСамое, что интересное — всё работает, каждый контекст (сайт) загружается, все страницы работают…
Но, при попытке зайти в админку — выдает 404 ошибку…
Может дело в том, что у меня основной сайт лежит по адресу site.ru? а не site.site.ru?
Вы можете написать основные настройки Ваши или как у вас устроено… видимо какая-то мелочь не пропускает это дело…
В логах это — site1.site.ru: 127.0.0.1 [30/Dec/2015:01:56:35 +0300] «GET /mngredu HTTP/1.1» 404 171 "-" «Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0»
Спасибо!
base_url — /
уберите оттуда site1.site.ru
или вы опечатались, а затем исправили? (в письме мне пришло несколько иное)
В своем профиле добавьте возможность оправки личных сообщений
уберите оттуда site1.site.ru
или вы опечатались, а затем исправили? (в письме мне пришло несколько иное)
В своем профиле добавьте возможность оправки личных сообщений
На самом деле base_url поставил site1.site.ru, чтобы если зайдешь с админки site.ru, чтобы при клике «Перейти на сайт»… попадать не на site.ru а на site1.site.ru
Но куча глюков вылезла, например права урезаны только до Content Manager и если нажать на иконку «страничка» — создать ресурс — почему-то работает в контексте web… и пишет ошибку доступа… (пытался добавить настройку — default_context — site1.site.ru, неудачно (( )
После этого понял, что по-любому нужно открывать админку по адресу — site1.site.ru/manager
А так фиг знает, может версии слишком новые или еще какая-нибудь ерунда… тыкаешься во всё подряд и никак не заработает…
Профиль открыл для сообщений
Но куча глюков вылезла, например права урезаны только до Content Manager и если нажать на иконку «страничка» — создать ресурс — почему-то работает в контексте web… и пишет ошибку доступа… (пытался добавить настройку — default_context — site1.site.ru, неудачно (( )
После этого понял, что по-любому нужно открывать админку по адресу — site1.site.ru/manager
А так фиг знает, может версии слишком новые или еще какая-нибудь ерунда… тыкаешься во всё подряд и никак не заработает…
Профиль открыл для сообщений
Всё получилось. Нужно на хостинге/сервере направить все нужные домены на одну папку… а не создавать для каждого сайта папку в отдельности.
Спасибо!
Спасибо!
Я создал один контекст для образца, со всеми индивидуальными настройками которые мне нужны для каждого домена и потом просто копировал его, чтобы каждый раз не прописывать отдельные настройки для каждого контекста. Кроме того в этом образцовом контексте созданы ресурсы 404, sitemap и т.д., они тоже копируются при копировании контекста — это удобно.Скажите, а если сейчас есть контекст web — как контекст основного сайта — его можно просто скопировать создав новый контекст или нужно все материалы переносить (создавать заново) в новом контексте?
Скопировать контекст web можно, ресурсы тоже копируются в новый контекст.
Копируем контекст в дереве ресурсов:
Далее:
Он скопирует все ресурсы в контектсе.
Копируем контекст в дереве ресурсов:
Далее:
Он скопирует все ресурсы в контектсе.
Спасибо большое!
И еще возник вопрос — при создании мультисайта для каждого домена (сайта) нужна же своя база данных и свои файлы или сто-то общее из этого. Подскажите пожалуйста по подробнее именно по структуре (файлы, БД).
База у меня одна на всех.
Для модераторов каждого отдельного сайта настроены доступы к источникам файлов.
Для модераторов каждого отдельного сайта настроены доступы к источникам файлов.
А сайты получаются однотипной тематики или в принципе это разные сайты просто заведены в одну админку? Просто немного по БД не вкуриваю — или там без разницы — от нескольких разных сайтов хранить информацию или от одного — все делится по контекстам?
Сделал мультисайт на поддоменах. Основной сайт лежит по адресу site.ru, второй сайт по адресу site1.site.ru. Создал второй контекст путем копирования первого (web), настроил у него необходимые параметры. Перенес в папку site.site.ru три файла: index.php, .htaccess, config.core.php
Но в результате получил 2 проблемы:
1. Не все стили подгружаются, потому как они стучаться по адресу например site.site.ru/css? а физически лежат по адресу site.ru/css Это можно конечно решить путем прописывания абсолютных путей, но это не решение ввиду того, что почти во всех устанавливаемых компонентах будет такая беда. И править вечно пути нет желания — хочется все упросить дом максимума.
2. Не получается зайти в админку — оно и понятно — в папке site.site.ru ее нет.
Подскажите мне по структуре файлов — не совсем понял, как нужно создать структуру. Говорят все в одну папку закинуть, какие файлы нужно переносить, подскажите плиз.
Но в результате получил 2 проблемы:
1. Не все стили подгружаются, потому как они стучаться по адресу например site.site.ru/css? а физически лежат по адресу site.ru/css Это можно конечно решить путем прописывания абсолютных путей, но это не решение ввиду того, что почти во всех устанавливаемых компонентах будет такая беда. И править вечно пути нет желания — хочется все упросить дом максимума.
2. Не получается зайти в админку — оно и понятно — в папке site.site.ru ее нет.
Подскажите мне по структуре файлов — не совсем понял, как нужно создать структуру. Говорят все в одну папку закинуть, какие файлы нужно переносить, подскажите плиз.
Не нужно ничего никуда переносить. Используй плагин переключения контекстов bezumkin.ru/sections/tips_and_tricks/2439/
А в таком случае у меня папка site.site.ru пустая. В админке есть плагин на событие OnHandleRequest.
При переходе по адресу site.site.ru выдает 403 ошибку.
При переходе по адресу site.site.ru выдает 403 ошибку.
Тебе вообще не нужна папка site.site.ru. Все домены должны вести на основной каталог сайта.
Так вот я это и пытаюсь сделать, но не пойму где я не прав
Настройку доменов необходимо производить в панели управления хостингом.
Ладно. Ответа я не дождался. Всегда все полунамеками пишется, вместо того, чтобы один раз написать по-человечески ответ на вопрос. все наверное с рулем в руках родились…
В моих ответов полунамеков нет. Как правильно, вопросы задают для получения направления. Я направление вполне ясно обозначил.
Если что-то осталось непонятно, формулируй вопросы точнее и полнее. Я не телепат, чтобы догадываться, что же на самом деле требуется и в чем сложность.
Если что-то осталось непонятно, формулируй вопросы точнее и полнее. Я не телепат, чтобы догадываться, что же на самом деле требуется и в чем сложность.
Есть основной домен site.ru
Есть поддомен site1.site.ru
папка поддомена у меня пустая, как я понял туда переносить никакие файлы не надо. Но при переходе по адресу поддомена вылетает 403 ошибка. Плагин для переключения контекстов есть. второй контекст называется site1.
Есть поддомен site1.site.ru
папка поддомена у меня пустая, как я понял туда переносить никакие файлы не надо. Но при переходе по адресу поддомена вылетает 403 ошибка. Плагин для переключения контекстов есть. второй контекст называется site1.
base_url /
---
http_host
site1.site.ru
—
site_start
26
—
site_url
http://site1.site.ru/
Вы говорите, что нужно настроить так, чтобы site1.site.ru ссылался на папку site.ru? И делается это на хостинге. А как — подскажите, какие настройки нужно трогать?
Страница с 403 ошибкой — серверная? На ней есть упоминание nginx или apache? Если да, направляй домен на основной каталог сайта — я писал об этом выше.
Это нужно положить в site1.site.ru .htaccess и в нем 301 редирект? Но тогда в адресной строке будет адрес site.ru
Нет. Непосредственно поддомен должен быть направлен на каталог основного сайта. Если не понимаешь, как изменить настройки в панели управления хостингом, обратись в поддержку хостинга.
Обратился я к хостингу — там до сих пор не могут решить вопрос. На хостинге ISP Manager. Подскажите, как сделать так, чтобы поддомен направлялся на папку основного домена?
На данный момент они сделали так — при обращении к site1.site.ru он переадресовывается на site.ru/site1/ и в строке браузера этот адрес стоит — что не совсем так, как хотелось бы. Хотелось бы чтобы адрес в строке браузера оставался site1.site.ru
На данный момент они сделали так — при обращении к site1.site.ru он переадресовывается на site.ru/site1/ и в строке браузера этот адрес стоит — что не совсем так, как хотелось бы. Хотелось бы чтобы адрес в строке браузера оставался site1.site.ru
По ISP ничего не вспомню.
Пиши доступ на почту, подумаем дальше.
Пиши доступ на почту, подумаем дальше.
Пути на isp настройте, или в менджили в конфиге. Просто вручную нужно выставть папку var/www/user/www/site.ru, обычно там такие пути. Ну или через профиль напишите
Выставил путь к папке для поддомена, но в итоге получается просто релирект на нее. То есть вбиваю в админке site1.site.ru а переходит он на site.ru/site1/ Хостинг говорит, что где-то помимо него есть редирект, но где?
Удалось победить мультисайтовость?
Если да, то сколько времени занял процесс со всей шелухой и настройками?
Если да, то сколько времени занял процесс со всей шелухой и настройками?
Пока нет. Не победил. Но проблема у меня в настройках хостинга. Так что с нормальным хостингом все пройдет быстро и гладко. Все займет несколько минут.
Например Beget, подойдет?
P.S. Ай как не хочется уйти в безконечный марафон…
P.S. Ай как не хочется уйти в безконечный марафон…
Да, с Бегетом проблем быть не должно.
С Бегетом пока фара, однако ниже дали конкретный ответ на вопрос о «Как заставить домен ссылаться в одну папку». Возможно тебе поможет:
/etc/apache2/apache2.conf
для каждого домена добавлена запись:
/etc/apache2/apache2.conf
для каждого домена добавлена запись:
<VirtualHost ip адрес моего сервера:81 >
ServerName домен_каждого_отдельного_сайта.ru
DocumentRoot /var/www/мойосновнойдомен.ru/data/www/мойосновнойдомен.ru
</VirtualHost>
Но подходит это только для виртуального хостинга. Написал в ТП Бегет с примером кода — жду ответа, как проделать тоже самое но обычном хостинге.
Для виртуального хостинга это вообще не поможет, ибо редактировать основной конфиг веб-сервера никто никогда не позволит.
Вроде бы поборол я свою проблему. С помощью хостинга — там нашелся таки толковый специалист, который сразу понял что нужно сделать.
Но теперь проблема такого плана.
На сайте не отображаются картинки товаров minshop2
Возможно, нужно прописать как то пути в настройках контекста для minishop 2?
Кто подскажет в чем дело?
Но теперь проблема такого плана.
На сайте не отображаются картинки товаров minshop2
Возможно, нужно прописать как то пути в настройках контекста для minishop 2?
Кто подскажет в чем дело?
Расскажи как заставил ссылаться новые домены в одну папку через хостера?
Был у тебя авто-редидект с нового домена на основной при открытии страниц нового домена?
Если да, тот как отключить такую переадресацию?
Был у тебя авто-редидект с нового домена на основной при открытии страниц нового домена?
Если да, тот как отключить такую переадресацию?
У меня панель ISP Manager.
Для основного домена есть настройка автоподдомены — ее нужно было отключить.
Далее я создал папку внутри основного домена. Вернее, я сделал одну папку, а внутри нее уже папку по имени поддомена. Чтобы было потом легче ориентироваться, для какого домена где лежат файлы.
Далее я в настройках основного домена указал псевдоним вида *.site.ru
Самое интересное что поддомен я при этом вообще не создавал. И по этому моменту у меня еще есть вопросы к хостеру.
Далее я прописал в DNS-настройках A запись * = IP сервера
P.S. Переадрессация была у меня сначала с поддомена на папку внутри основного сайта. Хостер сказал что она настроена была в htaccess
Могу уточнить что именно он изменил там.
Для основного домена есть настройка автоподдомены — ее нужно было отключить.
Далее я создал папку внутри основного домена. Вернее, я сделал одну папку, а внутри нее уже папку по имени поддомена. Чтобы было потом легче ориентироваться, для какого домена где лежат файлы.
Далее я в настройках основного домена указал псевдоним вида *.site.ru
Самое интересное что поддомен я при этом вообще не создавал. И по этому моменту у меня еще есть вопросы к хостеру.
Далее я прописал в DNS-настройках A запись * = IP сервера
P.S. Переадрессация была у меня сначала с поддомена на папку внутри основного сайта. Хостер сказал что она настроена была в htaccess
Могу уточнить что именно он изменил там.
Да, узнай, пожалуйста про переадресацию в htaccess.
И про это:
И про это:
Для основного домена есть настройка автоподдомены — ее нужно было отключить.можно подробнее.
Для основного домена есть настройка автоподдомены — ее нужно было отключить.В ISP есть 2 вида настроек автоподдоменов — в папке основного сайта и в отдельной папке.
У меня сначала стояла настройка — в папке основного сайта. А хостер сказал вообще отключить автоподдомены.
Ясно.
Походу у меня вообще другая пляска.
Странно, что при очевидных плюсах и выгодах мультисата на Modx, созданная ветка обсуждений такая сухая и равнодушная…
Походу у меня вообще другая пляска.
Странно, что при очевидных плюсах и выгодах мультисата на Modx, созданная ветка обсуждений такая сухая и равнодушная…
Странно, что при очевидных плюсах и выгодах мультисата на Modx, созданная ветка обсуждений такая сухая и равнодушная…Может только у нас такие заморочки? ))) У всех поди работает все с первого раза))
Сори, если ответы очевидны, но эти детали требуют уточнения:
Переадресация идет, если имя домена совпадает с именем контекста.То есть у нового контекста задаем: ключ — site.ru; имя — site.ru Включая ".ru"?
Сайты на виртуальном сервере, все домены ссылаются в одну папкуЭто тоже самое, что в разделе «Управление доменами» хостинга Бегет выбрать «Направить домен на существующую директорию»?
у меня просто в файле конфига апача
т.е. плагин bezumkin.ru/sections/tips_and_tricks/2439/ сравнивает имя домена с настройкой контекста http_host
/etc/apache2/apache2.confдля каждого домена добавлена запись:
<VirtualHost ip адрес моего сервера:81 >
ServerName домен_каждого_отдельного_сайта.ru
DocumentRoot /var/www/мойосновнойдомен.ru/data/www/мойосновнойдомен.ru
</VirtualHost>
при этом DocumentRoot каждого отдельного сайта как раз ссылается на папку основного домена.Переадресация идет, если имя домена совпадает с именем контекста.— здесь я наврал, имя домена должно совпадать с параметром http_host в настройках контекста
т.е. плагин bezumkin.ru/sections/tips_and_tricks/2439/ сравнивает имя домена с настройкой контекста http_host
Спасибо! Тоже обратил внимание на отсутствие связи с именем контекста в плагине Василия.
А вот момент с «все домены ссылаются в одну папку» остается открытым. Установив плагин bezumkin.ru/sections/tips_and_tricks/2439/ и выполнив «Направить домен на существующую директорию» в Бегет получаю:
При открытии ресурса из нового контекста — сначала открывается URL нового домена (на доли секунды), а затем открывается URL основного домена с alias от нового.
Похоже на редирект 301 от хостинга, но в серверных делах я тугой. Может кто с форума поможет разобраться?
А вот момент с «все домены ссылаются в одну папку» остается открытым. Установив плагин bezumkin.ru/sections/tips_and_tricks/2439/ и выполнив «Направить домен на существующую директорию» в Бегет получаю:
При открытии ресурса из нового контекста — сначала открывается URL нового домена (на доли секунды), а затем открывается URL основного домена с alias от нового.
Похоже на редирект 301 от хостинга, но в серверных делах я тугой. Может кто с форума поможет разобраться?
исправил текст в статье
Тех поддержа Бегет сообщила, что если в разделе «Управление доменами» выбрать «Направить домен на существующую директорию» то в конфиг Apache получается следующее:
Бегет говорит, что Переадресация на основной домен настроена в конфигурационном файле ./core/config/config.inc.php:
З.Ы. Также заметил, что открытие сайта нового контекста и последующая Переадресация на основной-домен просходит как при включенном, так и при отключенном плагине: bezumkin.ru/sections/tips_and_tricks/2439/
<VirtualHost *:80>
DocumentRoot /home/y/sssr/основной-домен.ru/public_html
ServerName новый-домен.ru
ServerAlias www.новый-домен.ru
SetEnvIf X-Forwarded-Proto https HTTPS=on
TimeOut 300
ScriptAlias /cgi-bin/ /home/y/sssr/основной-домен.ru/public_html/cgi-bin/
<Directory /home/y/sssr/основной-домен.ru>
Options All -Indexes
AllowOverride All
</Directory>
</VirtualHost>
То есть выполняется требование №1 автора поста все домены ссылаются в одну папку,Однако, при открытии страницы из нового контекста происходит редирект на основной-домен.ru
Бегет говорит, что Переадресация на основной домен настроена в конфигурационном файле ./core/config/config.inc.php:
if (!defined('MODX_HTTP_HOST')) {
if(defined('PHP_SAPI') && (PHP_SAPI == "cli" || PHP_SAPI == "embed")) {
$http_host='основной-домен.ru';
define('MODX_HTTP_HOST', $http_host);
} else {
$http_host= array_key_exists('HTTP_HOST', $_SERVER) ? $_SERVER['HTTP_HOST'] : 'основной-домен.ru';
if ($_SERVER['SERVER_PORT'] != 80) {
$http_host= str_replace(':' . $_SERVER['SERVER_PORT'], '', $http_host); // remove port from HTTP_HOST
}
$http_host .= ($_SERVER['SERVER_PORT'] == 80 || $isSecureRequest) ? '' : ':' . $_SERVER['SERVER_PORT'];
define('MODX_HTTP_HOST', $http_host);
}
}
Почему такая Переадресация вообще происходит и как её отключить?З.Ы. Также заметил, что открытие сайта нового контекста и последующая Переадресация на основной-домен просходит как при включенном, так и при отключенном плагине: bezumkin.ru/sections/tips_and_tricks/2439/
Помогла случайность: выход их админки основного сайта и очитска кэша в браузере (Chrome)
Странно, что при очевидных плюсах и выгодах мультисайта на Modx, созданная ветка обсуждений такая сухая и равнодушная.
Пожалуйста, отзовитесь владельцы мультисайтов на «обычных» хостингах типа Бегет и поделитесь пошаговым опытом.
Особенно интересуют настройки хостинга для успешной работы мультисайта!
З.Ы. — данная тема уже первая в поисковиках по запросу «мультисайт Modx», а значит у программистов есть отличный шанс доказать свой профессионализм и найти новых заказчиков…
Пожалуйста, отзовитесь владельцы мультисайтов на «обычных» хостингах типа Бегет и поделитесь пошаговым опытом.
Особенно интересуют настройки хостинга для успешной работы мультисайта!
З.Ы. — данная тема уже первая в поисковиках по запросу «мультисайт Modx», а значит у программистов есть отличный шанс доказать свой профессионализм и найти новых заказчиков…
А я задался таким вопросом — работать то все работает, но папки сайта ак таковой нет (я про поддомен). Даже самого поддомена не создано в хостинге. Задал сей вопрос в хостинг — теперь опять решаем всем миром))
Запустил мультисайт по инструкции автора.
Удалось обойтись без создания папок в корне для каждого сайта — файлы отлично подгружаются из общей папки assets и не требуется вырезать часть URL.
Также избежал создания отдельных чанков для доп сайтов, кроме footer где стоит индивидуальный счетчик. Например, логотип сайта в header легко подгружается из общей кучи путем:
getTickets и pdoMenu отлично понимают контекст, хотя в некоторых случаях и пришлось добавить параметр &context=``
В итоге копирую «шаблонный» контекст и на него вешаю новый домен разделы и документы использую все чанки и шаблоны от основного сайта.
Однако остался нерешенный момент с файлом robots.txt, а именно строкой Host:
Пока её тупо удалил — посмотрим на реакцию поисковиков…
P.S. — Спасибо автору поста за идею — люблю все оптимизировать. Например, хостинг Бегет теперь обходится дешевле, т. к. тарифы привязаны к количеству сайтов, а количество доменов не ограничено. Думаю ход мысли вы уловили :)
Удалось обойтись без создания папок в корне для каждого сайта — файлы отлично подгружаются из общей папки assets и не требуется вырезать часть URL.
Также избежал создания отдельных чанков для доп сайтов, кроме footer где стоит индивидуальный счетчик. Например, логотип сайта в header легко подгружается из общей кучи путем:
<img src="assets/template/images/logo [[++site_name]].png" alt="" />
. То есть создаем сколько угодно логотипов соблюдая название logo [[++site_name]].png и создавать отдельный чанк не нужно.getTickets и pdoMenu отлично понимают контекст, хотя в некоторых случаях и пришлось добавить параметр &context=``
В итоге копирую «шаблонный» контекст и на него вешаю новый домен разделы и документы использую все чанки и шаблоны от основного сайта.
Однако остался нерешенный момент с файлом robots.txt, а именно строкой Host:
Пока её тупо удалил — посмотрим на реакцию поисковиков…
P.S. — Спасибо автору поста за идею — люблю все оптимизировать. Например, хостинг Бегет теперь обходится дешевле, т. к. тарифы привязаны к количеству сайтов, а количество доменов не ограничено. Думаю ход мысли вы уловили :)
Однако остался нерешенный момент с файлом robots.txt, а именно строкой Host:
В контексте создаем и публикуем ресурс (например, robots.txt) с пустым шаблоном: тип ресурса — документ, тип содержимого — text, псевдоним — robots. В содержимое пишем:
User-agent: *
Allow: /
Host: [[++http_host]]
Sitemap: [[++site_url]]sitemap.xml
Благодарочка
У меня такое решение не работает и выдает ошибку 404
можно пользоваться компонентом RobotsBuilder. Вполне себе на мультисайтах хорошо работает.
Привет.
Столкнулся с задачей.
Что писать http_host, site_url когда домен вида «русскийсайт.ру», «поддомен.русскийсайт.ру»
???
Столкнулся с задачей.
Что писать http_host, site_url когда домен вида «русскийсайт.ру», «поддомен.русскийсайт.ру»
???
Как обычно:
Домен: русскийсайт.рф
Домен: XN--80APDBB9AHADMC.XN--P1AI
Домен: русскийсайт.рф
Домен: XN--80APDBB9AHADMC.XN--P1AI
Здравствуйте.
Не подскажите правила для .htaccess для головного сайта сайт.ru и его поддомена поддомен.сайт.ru, чтобы оба открывались без www? .htaccess у них общий.
Сейчас стоит
Правило
готов отблагодарить денюжкой
Не подскажите правила для .htaccess для головного сайта сайт.ru и его поддомена поддомен.сайт.ru, чтобы оба открывались без www? .htaccess у них общий.
Сейчас стоит
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^сайт\.ru [NC]
RewriteRule (.*) https://сайт.ru/$1 [R=301,L]
и когда захожу на поддомен.сайт.ru, то он переадресовывает на сайт.ru.Правило
# Редирект site1.ru -> www.site1.ru
RewriteCond %{HTTP_HOST} ^site1.ru\.ru [NC]
RewriteRule ^/?(.*) http://www.site1.ru/$1 [R=301,L]
# Редирект всех остальных www -> non-www, кроме site1.ru
RewriteCond %{HTTP_HOST} !^www\.site1\.ru [NC]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
не работает ((готов отблагодарить денюжкой
Заменяем
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^сайт\.ru [NC]
RewriteRule (.*) https://сайт.ru/$1 [R=301,L]
наRewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} ^www\.сайт\.ru [NC]
RewriteRule (.*) https://сайт.ru/$1 [R=301,L]
Для поддомена такое правило не требуется. Вряд ли по адресу www.поддомен.сайт.ru попадёте на поддомен.сайт.ru. Будет какая-нибудь ошибка типа сервер не найден. Склейка в этом случае не требуется.
Спасибо большое за ответ. К сожалению переадресация все равно происходит. Пытался закрывать такие настройки
Когда закрываю вообще все настройки, то вроде все работает, правда сейчас почему-то на дочерних страницах выходит 404 ошибка. Не силен в htaccess, поэтому ищу человека, который поможет разобраться.
# The Friendly URLs part
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
но все безтолку.Когда закрываю вообще все настройки, то вроде все работает, правда сейчас почему-то на дочерних страницах выходит 404 ошибка. Не силен в htaccess, поэтому ищу человека, который поможет разобраться.
Помогите пожалуйста. Уже вторые сутки бьюсь. Создал по инструкции Василия, вроде все норм. открывается site.ru и test.site.ru Но контент не меняется, показывает везде какой на site.ru. Скопировал контекст с сохранением структуры и урлами и т.д. .htaccess прописал редиректы как в примере автора. В чем проблема?
создал сниппет с $_SERVER['HTTP_HOST'], вставил его в шаблон на странице test.site.ru показывает хост site.ru
Решил проблему
Добрый день,
Подскажите как правила Apache2 переделать под nginx
Попробовал вот так, не работает
Подскажите как правила Apache2 переделать под nginx
RewriteCond %{HTTP_HOST} ^www\.sub.domen-1\.ru [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)\.(ico|png|gif|jpg|jpeg|pdf|css|js)$ /site/sub.domen-1.ru/$0 [L,NC]
Попробовал вот так, не работает
if ($host = "www.sub.domen-1.ru"){ rewrite ^/(.+)\.(ico|png|gif|jpg|jpeg|pdf|css|js)$ /site/sub.domen-1/$1 break;}
if ($host = "www.sub.domen-1.ru"){ rewrite ^/(.+)\.(ico|png|gif|jpg|jpeg|pdf|css|js)$ /site/sub.domen-1.ru/$1 break;}
Здравствуйте. Планируется сайт на поддоменах для разных российских городов, и у каждого поддомена еще 2 языка (рус,en). Как такое можно реализовать, используя контексты? Отдельно эти две задачи реализовывал на разных сайтах. Но 2-в-1 не приходилось, и описания подобного нигде не нашел.
Никто не сталкивался с таким?
У меня получается 5 регионов на поддоменах типа site.ru, kazan.site.ru, spb.site.ru, nn.site.ru, ekb.site.ru. Это планируется на контекстах реализовать по инструкции Безумкина.
И у каждого такого сайта 2 языка будет. На контекстах уже не получится, насколько я понимаю, т.к. их функции заняты. Что использовать в данном случае посоветуете?
У меня получается 5 регионов на поддоменах типа site.ru, kazan.site.ru, spb.site.ru, nn.site.ru, ekb.site.ru. Это планируется на контекстах реализовать по инструкции Безумкина.
И у каждого такого сайта 2 языка будет. На контекстах уже не получится, насколько я понимаю, т.к. их функции заняты. Что использовать в данном случае посоветуете?
Локализатор, например modx.pro/components/12012-localizator-multilingual-seo-translation/
Выглядит неплохо. Но совсем свежая разработка, посмотреть бы примеры готовые. Наткнулся также на модуль Lingua и какой-то migxMultiLang. Но Lingua, как понял из документации, не подходит, т.к. нельзя для одной страницы на разных языках разные темплейты использовать. Про второй пока вобще мало инфы нашел.
темплейты для разных языков- смотрите в сторону fenom и в случае с Lingua и с Локализатором, хотя скорее не совсем разные темплейты, а один темплейт и разные блоки феномом переключать в зависимости от языка
Вопрос по урлам, не получается укоротить часть урл., выдает ошибку 500
file.modx.pro/files/1/6/e/16e4652a6c7eb72e4f71ee443fbb53be.jpg
file.modx.pro/files/8/f/c/8fc57695113aadff0da069775c615fbb.jpg
file.modx.pro/files/e/1/3/e13cd28dffc7e19edaafdc0d4373a30b.jpg
file.modx.pro/files/7/e/0/7e084603aedb4096a59958253ca04f13.jpg
при отключении плагина все работает корректно…
file.modx.pro/files/1/6/e/16e4652a6c7eb72e4f71ee443fbb53be.jpg
file.modx.pro/files/8/f/c/8fc57695113aadff0da069775c615fbb.jpg
file.modx.pro/files/e/1/3/e13cd28dffc7e19edaafdc0d4373a30b.jpg
file.modx.pro/files/7/e/0/7e084603aedb4096a59958253ca04f13.jpg
при отключении плагина все работает корректно…
Подскажите, а как быть с https соединением?
Сейчас есть домен domen.ru — он доступен по https соединению.
Есть poddomen.domen.ru — он сейчас доступен только по http.
При заходе на poddomen.domen.ru его редиректит на domen.ru
в .htaccess указано
Подскажите, как сделать что бы не редиректило с poddomen.domen.ru на domen.ru?
Или как настроить мультисайтовость, в случае создания поддомена в отдельной директории?
Сейчас есть домен domen.ru — он доступен по https соединению.
Есть poddomen.domen.ru — он сейчас доступен только по http.
При заходе на poddomen.domen.ru его редиректит на domen.ru
в .htaccess указано
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^domen\.ru [NC]
RewriteRule (.*) https://domen.ru/$1 [R=301,L]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://domen.ru/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Что бы сделать для поддомена https, нужно создать его в отдельной директории. Но тогда не работает мультисайтовость. Подскажите, как сделать что бы не редиректило с poddomen.domen.ru на domen.ru?
Или как настроить мультисайтовость, в случае создания поддомена в отдельной директории?
не нашел как спрятать шаблоны не относящиеся к текущему контексту.Кто нибудь нашёл как убрать шаблоны не относящиеся к текущему контексту?
А то получаеться, если много разных клиентов — (контекст), то показывает очень много шаблонов!
Или хотя бы как меняеться дефолтный шаблон для конкретной группы пользователей?
Если менялись бы они, тогда можно было как то убрать вообще выбор Шаблонов в редакторе Ресурса, на скрине я показал, что имею ввиду:
Если менялись бы они, тогда можно было как то убрать вообще выбор Шаблонов в редакторе Ресурса, на скрине я показал, что имею ввиду:
Можно у контекста создать настройку default_template — в ней указать id шаблона, который нужно использовать у дочерних ресурсов.
Спасибо попробовал, всё равно все шаблоны выводятся
Случайно удалил скрин сори, вот:
Как настроить поддомены в ISP manager:
просто прописываете нужные поддомены в псевдонимах основного домена. Автоподдомены — отключены. Никакие папки создавать не нужно.
Домены второго уровня скорее всего также добавляются (еще не пробовал).
просто прописываете нужные поддомены в псевдонимах основного домена. Автоподдомены — отключены. Никакие папки создавать не нужно.
Домены второго уровня скорее всего также добавляются (еще не пробовал).
Приветсвую! Делаю все настройки по инструкции, но контенты не переключаются в зависимости от доменного имени, отправляет на главную страницу основного сайта. Если менять id стартовой у главного сайта в насторойках контента, переадресация идет на нужный id. В чем может быть проблема?
Всем добра!
Прочитал почти все комментарии но не нашел вопроса с похожим запросом.
У меня есть много однотипных сайтов site-region1.ru, site-region2.ru, site-region3.ru и тд.
Для некоторых нужна мультиязычность (site-region3.ru русская версия, site-region3.ru/en/ — английская)
Каждый регион имеет свой контекст. И если есть языковая версия, то она выносится в новый контекст.
Использовал код для переключения контекстов отсюда — bezumkin.ru/sections/tips_and_tricks/2439/
Но использовал для доменов и поддоменов, который использует http_host для проверки.
Вот)))
Вопрос в том, как соединить эти 2 метода проверки, чтобы проверить http_host, а потом base_url?
Спасибо большое за любую помощь!
Прочитал почти все комментарии но не нашел вопроса с похожим запросом.
У меня есть много однотипных сайтов site-region1.ru, site-region2.ru, site-region3.ru и тд.
Для некоторых нужна мультиязычность (site-region3.ru русская версия, site-region3.ru/en/ — английская)
Каждый регион имеет свой контекст. И если есть языковая версия, то она выносится в новый контекст.
Использовал код для переключения контекстов отсюда — bezumkin.ru/sections/tips_and_tricks/2439/
Но использовал для доменов и поддоменов, который использует http_host для проверки.
Вот)))
Вопрос в том, как соединить эти 2 метода проверки, чтобы проверить http_host, а потом base_url?
Спасибо большое за любую помощь!
Вам принципиально определять язык через сегмент адреса?
Было бы существенно проще, если бы язык шел поддоменом. en.site-region3.ru/
В текущем случае вы конечно осилите переключение языка основываясь на host + /lang/
Но останутся нерешенными проблемы внутри JS. Все ajax запросы будут улетать на базовый хост, и ответы будут приходить на базовом языке.
Было бы существенно проще, если бы язык шел поддоменом. en.site-region3.ru/
В текущем случае вы конечно осилите переключение языка основываясь на host + /lang/
Но останутся нерешенными проблемы внутри JS. Все ajax запросы будут улетать на базовый хост, и ответы будут приходить на базовом языке.
Да, это основное требования для SEO. Чтобы языковые версии оставались внутри одного домена или поддомена.
Поэтому ищу способ решения задачи в такой форме. Не совсем понял про JS, какие трудности могут возникнуть?
Поэтому ищу способ решения задачи в такой форме. Не совсем понял про JS, какие трудности могут возникнуть?
Я могу ошибаться. Тогда коллеги меня поправят.
Возьмем к примеру компонент mSearch2 и его автодополнения в поисковой строке.
Компонент отправляет запросы к серверу, беря за основу текущий хост. Который всегда без сегментов адреса.
Сервер используя хост, получает язык контекста и отдает ответ на языке чистого хоста.
Таким образом находясь на адресе site-region3.ru/en/ сервер будет запрашивать контекст основываясь только на хосте site-region3.ru и язык ответа для поисковых запросов будет русский (ну или какой там будет основным)
И таких компонентов, которые берут за основу только хост — много. Их можно дорабатывать конечно. Просто возни больше.
Возьмем к примеру компонент mSearch2 и его автодополнения в поисковой строке.
Компонент отправляет запросы к серверу, беря за основу текущий хост. Который всегда без сегментов адреса.
Сервер используя хост, получает язык контекста и отдает ответ на языке чистого хоста.
Таким образом находясь на адресе site-region3.ru/en/ сервер будет запрашивать контекст основываясь только на хосте site-region3.ru и язык ответа для поисковых запросов будет русский (ну или какой там будет основным)
И таких компонентов, которые берут за основу только хост — много. Их можно дорабатывать конечно. Просто возни больше.
Если я правильно понял о поиске языковой версии в урл, то вот
<?
// Массив допустимых язоковые версий, можно сделать настройку в модх и через getOption() получить, но это лишний запрос к БД
$allowLanguages = ['en','es'];
// Разбор урла
$queryArray = parse_url($_SERVER['HTTP_REFERER']);
// Разбор пути запроса
$urlArray = explode('/', $queryArray['path']);
// Если первый сегмент пути есть в массиве допустимых языков, соответственно урл содержит языковую версию
if(in_array($urlArray[1], $allowLanguages)){
// Тут ищем контекст с языковой версией и делаем переключение на него или что-то другое
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.