Страницы - поддомены
Всем привет!
Возникла потребность показывать страницы в качестве поддоменов, причем сохраняя возможность вложенности страниц.
Не нашел готового решения, потому результатом стал плагин, который можно увидеть под катом.
Позволяет использовать обычные страницы в качестве поддоменов, примеры:
mysite.ru/test — Изначальный адрес.
test.mysite.ru — Новый адрес с поддоменом.
Также работает и с дочерними страницами, примеры:
mysite.ru/test/page.html — Изначальный адрес.
test.mysite.ru/page.html — Новый адрес с поддоменом.
Сам плагин:
Есть 2 замечания:
1) Плагин не будет работать с www доменами.
2) Страницы доступны по обоим адресам.
Возникла потребность показывать страницы в качестве поддоменов, причем сохраняя возможность вложенности страниц.
Не нашел готового решения, потому результатом стал плагин, который можно увидеть под катом.
Позволяет использовать обычные страницы в качестве поддоменов, примеры:
mysite.ru/test — Изначальный адрес.
test.mysite.ru — Новый адрес с поддоменом.
Также работает и с дочерними страницами, примеры:
mysite.ru/test/page.html — Изначальный адрес.
test.mysite.ru/page.html — Новый адрес с поддоменом.
Сам плагин:
<?php
// Здесь указываем список поддоменов и id страниц, которые будут отображаться при переходе по ним
$domains = array (
'test.mysite.ru' => 13,
'test2.mysite.ru' => 15,
);
switch ($modx->event->name) {
case 'OnHandleRequest':
if (array_key_exists($_SERVER['HTTP_HOST'], $domains)) {
$modx->config['site_start'] = $domains[$_SERVER['HTTP_HOST']];
}
break;
case 'OnPageNotFound':
if (array_key_exists($_SERVER['HTTP_HOST'], $domains)) {
$subdomain = array_shift(explode('.', $_SERVER['HTTP_HOST']));
if ($id = $modx->findResource($subdomain.$_SERVER['REQUEST_URI'] , 'web')) {
$modx->sendForward($id);
}
}
break;
}
Есть 2 замечания:
1) Плагин не будет работать с www доменами.
2) Страницы доступны по обоим адресам.
Комментарии: 22
Добавьте кат… а то главная страница стремно смотрится…
Да, не подумал.
Добрый день.
Мне нужно сделать несколько копий сайта на поддомены, но при этом для удобства администрирования необходимо выполнить несколько условий:
1. Все в одной админке. Здесь я думаю на выручку придут контексты.
2. Доступ менеджерам дать только к определенному поддомену (каждому к своему).
3. Все товары (страницы сделаны на компоненте minishop2, хотя сайт не является интернет-магазинов в общем понимании.) должны работать с общей базы. То есть все товары нужно администрировать с основного домена, а на поддоменах они бы просто отображались. Это самый сложный для меня момент. Подскажите как сделать.
Мне нужно сделать несколько копий сайта на поддомены, но при этом для удобства администрирования необходимо выполнить несколько условий:
1. Все в одной админке. Здесь я думаю на выручку придут контексты.
2. Доступ менеджерам дать только к определенному поддомену (каждому к своему).
3. Все товары (страницы сделаны на компоненте minishop2, хотя сайт не является интернет-магазинов в общем понимании.) должны работать с общей базы. То есть все товары нужно администрировать с основного домена, а на поддоменах они бы просто отображались. Это самый сложный для меня момент. Подскажите как сделать.
Чтобы не воротить дел с контекстами можно попробовать сделать через этот плагин, тогда можно будет любую страницу сделать поддоменом — внутри поддомена можно будет добавлять товары, все в одном контексте.
И для каждого поддомена делать новую политику доступа.
И для каждого поддомена делать новую политику доступа.
А разве тут эта проблема не решается?
Т.е. не надо делать копии сайтов а можно просто воспользоваться решение предложенным автором.
1) использовать контексты по моему совсем не обязательно…
2) доступ для менеджеров ограничивается через «Группы ресурсов»
3) в итоге на выходе получаем то, что вам нужно. Админка в одном месте, общая база, разные доступы у каждого из менеджеров.
Т.е. не надо делать копии сайтов а можно просто воспользоваться решение предложенным автором.
1) использовать контексты по моему совсем не обязательно…
2) доступ для менеджеров ограничивается через «Группы ресурсов»
3) в итоге на выходе получаем то, что вам нужно. Админка в одном месте, общая база, разные доступы у каждого из менеджеров.
Я так понимаю, что здесь речь идет о странице, а у меня к примеру товар будет при таком плагине доступен по адресу вида poddomen.site.ru/catalog/tovar.html?
Верно, создается страничка с адресом poddomen, и она будет доступна по адресу poddomen.site.ru
Главное ее в плагине добавить в список.
Главное ее в плагине добавить в список.
Я имею ввиду, что у меня не сайт-одностраничник — если создать поддомен и его добавить в список — все внутренние страницы поддомена также будут доступны или их также нужно прилить в список?
Все внутренние страницы будут доступны, список задается только чтобы указать, какие поддомены вообще должны работать — дабы не делать все страницы поддоменами.
Окей, спасибо. Попробую, отпишусь.
Очень нужное для меня решение!
Только теперь нужно будет протестировать в сбоке — у меня стоит замечательный плагин Ильи Уткина autoRedirector + его же решение для редиректа на https. Главное, чтобы он мне циклический редирект не отдал)
Только теперь нужно будет протестировать в сбоке — у меня стоит замечательный плагин Ильи Уткина autoRedirector + его же решение для редиректа на https. Главное, чтобы он мне циклический редирект не отдал)
Да не должен, разве что со страницы test.site.ru сделать редирект на site.ru/test
Добрый день.
Подскажите где делаю не так?
1. Создал страницу Тест, адрес у нее site.ru/test
2. Создал плагин на события OnHandleRequest и OnPageNotFound
3. При переходе по test.site.ru отдает ошибку dns.
Пошел другим путем и помимо предыдущих шагов сделал настройку для домена — поддомены в отдельной диретории и создал сам поддомен.
Стал отдавать код 200, но с тем контентом, что есть на самом поддомене.
Подскажите где делаю не так?
1. Создал страницу Тест, адрес у нее site.ru/test
2. Создал плагин на события OnHandleRequest и OnPageNotFound
3. При переходе по test.site.ru отдает ошибку dns.
Пошел другим путем и помимо предыдущих шагов сделал настройку для домена — поддомены в отдельной диретории и создал сам поддомен.
Стал отдавать код 200, но с тем контентом, что есть на самом поддомене.
Да, этого я не уточнил.
У домена могут быть синонимы, например — site.ru и www.site.ru
В синонимы нужно добавить требуемые поддомены.
У домена могут быть синонимы, например — site.ru и www.site.ru
В синонимы нужно добавить требуемые поддомены.
То есть создаем поддомен физически и прописываем его в синонимах у основного домена?
Нет, создавать поддомен не нужно.
Должны быть выполнены 2 условия:
1) Этот поддомен ссылается на нужный ip адрес в DNS записях.
2) Для нужного сайта должен быть назначен данный поддомен как синоним.
Плагин должен работать, если выполнены оба условия.
Должны быть выполнены 2 условия:
1) Этот поддомен ссылается на нужный ip адрес в DNS записях.
2) Для нужного сайта должен быть назначен данный поддомен как синоним.
Плагин должен работать, если выполнены оба условия.
Хорошо, сделал так как вы сказали. теперь при переходе на поддомен у меня показывается нужная страница, но вся структура сайта так и осталась на основном — все меню ведет на основной домен. В принципе я так и предполагал. Скажите, какие нужны настройки чтобы полностью задублирвоать на поддомен сайт?
Можно настроить редирект с основного домена или вывести несколько пунктов меню вручную, к сожалению не вижу способов настроить wayfinder/pdomenu на корректную работу
Большое человеческое спасибо за решение! Как же давно его не хватало!!!
Здравствуйте.
А можно подробней написать как его использовать? Я создал плагин, но не знаю как его использовать. Помогите! Спасибо!
А можно подробней написать как его использовать? Я создал плагин, но не знаю как его использовать. Помогите! Спасибо!
Присоединяюсь к просьбе
Или может уже разобрались?
Или может уже разобрались?
MODX Revolution 2.8.5-pl
Не работает плагин, настроил всё правильно, отображает на поддомене просто главную страницу
Не работает плагин, настроил всё правильно, отображает на поддомене просто главную страницу
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.