Страницы - поддомены
Всем привет!
Возникла потребность показывать страницы в качестве поддоменов, причем сохраняя возможность вложенности страниц.
Не нашел готового решения, потому результатом стал плагин, который можно увидеть под катом.
Позволяет использовать обычные страницы в качестве поддоменов, примеры:
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) в итоге на выходе получаем то, что вам нужно. Админка в одном месте, общая база, разные доступы у каждого из менеджеров.
Главное ее в плагине добавить в список.
Только теперь нужно будет протестировать в сбоке — у меня стоит замечательный плагин Ильи Уткина autoRedirector + его же решение для редиректа на https. Главное, чтобы он мне циклический редирект не отдал)
Подскажите где делаю не так?
1. Создал страницу Тест, адрес у нее site.ru/test
2. Создал плагин на события OnHandleRequest и OnPageNotFound
3. При переходе по test.site.ru отдает ошибку dns.
Пошел другим путем и помимо предыдущих шагов сделал настройку для домена — поддомены в отдельной диретории и создал сам поддомен.
Стал отдавать код 200, но с тем контентом, что есть на самом поддомене.
У домена могут быть синонимы, например — site.ru и www.site.ru
В синонимы нужно добавить требуемые поддомены.
Должны быть выполнены 2 условия:
1) Этот поддомен ссылается на нужный ip адрес в DNS записях.
2) Для нужного сайта должен быть назначен данный поддомен как синоним.
Плагин должен работать, если выполнены оба условия.
А можно подробней написать как его использовать? Я создал плагин, но не знаю как его использовать. Помогите! Спасибо!
Или может уже разобрались?
Не работает плагин, настроил всё правильно, отображает на поддомене просто главную страницу