И так встала передо мной задача, наделать кучу поддоменов точнее доменов третьего уровня, причем создаваться и удалятся они должны были программно. Как и всегда в подобных случаях, когда сделать нужно и как незнамо, начал искать в инете. Не могу сказать что много чего нарыл, информация есть, но не много, в добавок при полевых испытаниях не один из найденных мной методов не заработал, пришлось изобретать свой, который сейчас и опишу. Так как я являюсь счастливым обладателем
итог того что мне было нужно это некая папочка, где я создаю еще одну папочку имя которой и будет являться именем поддомена, например корневой каталог поддоменов — subdomans, создаю в нем директорию — newsubdomen, и получаю рабочий адрес вида http://newsubdomen.mydomen.ru.
Задача поставлена, приступаем.
Для ясности введем обозначения:
основной домен имеет имя mydomen.ru
имя пользователя которому принадлежит домен в панели admin
ip адрес - xxx.xxx.xxx.xxx
порт сервера — pp
Первым делом идем в настройки зоны нужного нам домена, распологается нужный файл по адресу:
/var/named/etc/namedb/master/
Ищем файл mydomen.ru открываем его и видим что то вроже этого:
Добавляем сюда строчку — * IN A xxx.xxx.xxx.xxx, получается:
сохраняем изменения.
Теперь редактируем файл httpd.conf, т.е. конфиг апача, ищем его по адресу: /usr/local/etc/apache22/httpd.conf, открываем его ищем там нужную нам запись описывающую настройку VirtualHost нашего домена. Скорее всего запись будет выглядеть приблизительно так:
Ниже строки ServerAlias www.mydomen.ru вставляем строчку ServerAlias *.mydomen.ru, получается:
Сохраняем изменения, перезагружаем ВДС. Если он не загрузился пишем в саппорт, где то что то не так написали , расскажите какие файлы редактировали, ребята из саппорта поправят.
Собсвенно почти уже все настроили, последний штрих это написание правил перенаправления в .htaccess. Идем в папку в которой лежит домен, открываем для редактирования файл .htaccess, или создаем его если такого нету, и пишем туда:
RewriteBase /
RewriteCond %{HTTP_HOST} !^mydomen\.ru$
RewriteCond %{HTTP_HOST} (www\.)?(.*)\.mydomen\.ru$
RewriteCond %{REQUEST_URI} !^(/)?subdomans/
RewriteRule ^(.*)$ subdomans/%2/$1
ErrorDocument 404 http://mydomen.ru
Если файл уже такой есть, и он не пустой, то все это добавляем в начало файла. Объясню что же тут написано.
Первые три строки перенаправляют запросы вида www.mydomen.ru на адрес mydomen.ru, сделать это нужно т.к. поисковики любят такое перенаправление, без него они будут считать что домены www.mydomen.ru и mydomen.ru это два разных сайта.
Следующие пять строк, отвечают как раз за работу наших поддоменов, сначала проверяется уровень запрашиваемого домена, если он не второго уровня, то сервер перенаправляет этот запрос в папку по адресу — subdomans/имя_запрашиваемого_поддомена.
И последняя строчка говорит серверу что в случае, если запрашиваемый документ не найден, нужно вывести главную страницу сайта.
Вот собсвенно и все. Средствами пхп создаем папочку в директории subdomans, и радуемся результату.
P.S. Все выше написанное успешно применяется мной на практике, что отнюдь не значит у вас получится сделать все тоже самое без побочных эффектов. Редактируйте файлы настроек очень внимательно, лишний символ не там где нужно и сервер перестанет работать.
Комментарии