Автоматическое создание поддоменов

R1
На сайте с 28.08.2010
Offline
50
5643

Помогите сделать чтобы директории вида http://site.ru/sub/dir автоматически преобразовывались в http://dir.site.ru

M
На сайте с 13.08.2007
Offline
29
#1

Я обычно это делаю на Nginx

rewrite ^/sub/(.*)/(.*) http://$1.site.ru/$2 last;

ту есть тонкость, не обрабатывается случай когда в конце директории нет /

ну это зависит от задачи если что спрашивайте в личку

Joker-jar
На сайте с 26.08.2010
Offline
154
#2

Предлагаю решение под Apache. В конфигурации виртуального хоста прописываем:

ServerName site.ru

ServerAlias *.site.ru

В .htaccess в корневом каталоге (можно также вынести в конфиг):

RewriteEngine On

RewriteBase /

# основной домен - с www
RewriteCond %{HTTP_HOST} ^site.ru$
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]

# Субдомены
RewriteCond %{REQUEST_URI} !^/subdomains/ [NC]
RewriteCond %{HTTP_HOST} !^www.site.ru [NC]
RewriteCond %{HTTP_HOST} ^(.*).site.ru [NC]
RewriteCond %{DOCUMENT_ROOT}/subdomains/%1/ -d
RewriteRule (.*) /subdomains/%1/$1 [L]

# Несуществующие субдомены
RewriteCond %{REQUEST_URI} !^/subdomains/ [NC]
RewriteCond %{HTTP_HOST} !^www.site.ru [NC]
RewriteCond %{HTTP_HOST} ^(.*).site.ru [NC]
RewriteRule (.*) - [F,L]

В корневом каталоге создаем папку subdomains, в ней - подпапки для поддоменов (имя папки совпадает с именем поддомена). Что имеем: site.ru редиректит на www.site.ru. Если запросить поддомен, например sub.site.ru, то если существует каталог поддомена (subdomains/sub), то отобразится его контент, иначе - forbidden.

R1
На сайте с 28.08.2010
Offline
50
#3
Joker-jar:
Предлагаю решение под Apache. В конфигурации виртуального хоста прописываем:

ServerName site.ru

ServerAlias *.site.ru


В .htaccess в корневом каталоге (можно также вынести в конфиг):

RewriteEngine On

RewriteBase /

# основной домен - с www
RewriteCond %{HTTP_HOST} ^site.ru$
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]

# Субдомены
RewriteCond %{REQUEST_URI} !^/subdomains/ [NC]
RewriteCond %{HTTP_HOST} !^www.site.ru [NC]
RewriteCond %{HTTP_HOST} ^(.*).site.ru [NC]
RewriteCond %{DOCUMENT_ROOT}/subdomains/%1/ -d
RewriteRule (.*) /subdomains/%1/$1 [L]

# Несуществующие субдомены
RewriteCond %{REQUEST_URI} !^/subdomains/ [NC]
RewriteCond %{HTTP_HOST} !^www.site.ru [NC]
RewriteCond %{HTTP_HOST} ^(.*).site.ru [NC]
RewriteRule (.*) - [F,L]


В корневом каталоге создаем папку subdomains, в ней - подпапки для поддоменов (имя папки совпадает с именем поддомена). Что имеем: site.ru редиректит на www.site.ru. Если запросить поддомен, например sub.site.ru, то если существует каталог поддомена (subdomains/sub), то отобразится его контент, иначе - forbidden.

У меня виртуальный хостинг и нету доступа к настройкам виртуального хоста, что делать?

Joker-jar
На сайте с 26.08.2010
Offline
154
#4

Тогда вместо первого пункта нужно каким то образом настроить в панели, чтобы все поддомены открывали основной сайт (кстати, возможно в ДНС запись тоже придется подправить).

R1
На сайте с 28.08.2010
Offline
50
#5
Joker-jar:
Тогда вместо первого пункта нужно каким то образом настроить в панели, чтобы все поддомены открывали основной сайт (кстати, возможно в ДНС запись тоже придется подправить).

Я добавил в ДНС *.site.ru теперь все поддомены открывают одну и ту же страницу где написано: Apache is functioning normally.

а как настроить чтобы все поддомены на главную указывали не знаю, в панели немогу ничего придумать.

M
На сайте с 13.08.2007
Offline
29
#6

Надо поискать в панели настройкам виртуального хоста аналог строчки из конфига ServerAlias.

R1
На сайте с 28.08.2010
Offline
50
#7

Нашел только такое.

Joker-jar
На сайте с 26.08.2010
Offline
154
#8

Напишите в саппорт, спросите как настроить такое. Для наглядности покажите как это делается напрямую через конфиг:

ServerName site.ru

ServerAlias *.site.ru
R1
На сайте с 28.08.2010
Offline
50
#9
Joker-jar:
Напишите в саппорт, спросите как настроить такое. Для наглядности покажите как это делается напрямую через конфиг:
ServerName site.ru

ServerAlias *.site.ru

Спасибо огромное! уже обратился, и мне ответили что можна! 🙄

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий