[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Автоматические субдомены через .htaccess
Alex_r
Всем привет. Размещаюсь на виртуальном unix хостинге. Возникла потребность в автоматических субдоменах. На хостинге прописал *.example.com. В корне сайта создал папку domains и в ней уже размещаю субдомена www, panel, ... В корне сайта содержится .htaccess со следующим содержимым:

#Устанавливаем кодировку сайта
AddDefaultCharset utf-8

#Переадресации при разных ошибках
ErrorDocument 403 http://example.com/
ErrorDocument 404 http://example.com/

#Скрываем содержимое папок
Options All -Indexes

#Включаем преобразование ссылок
RewriteEngine on

#Склеиваем index.php с доменом
#RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
#RewriteRule ^index\.php$ / [R=301,L]

#Принудительная подстановка замыкающего слеша
#RewriteCond %{REQUEST_URI} /+[^\.]+$
#RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteRule .* - [L]

RewriteCond %{HTTP_HOST} ^([^.]*)\.example\.com$
RewriteCond %{REQUEST_URI} !^/domains
RewriteRule ^(.*)$ /domains/%1/$1 [QSA,L]

#Ловим переменные из урл
RewriteRule ^(.*)(\/|\.html)$ index.php?data=$1&last=$2 [L,QSA]

Судбомена открываются как по мне нормально, но есть ошибки, хотя не везде.

При открытии ссылки http://www.example.com/ ошибки нет.
При открытии ссылки http://panel.example.com/ ошибка следующая, за 1 открытие ссылки:

Цитата
[Mon Aug 17 20:02:50 2015] [notice] [client ...] [mod_vhost_ldap.c] translate: virtual host not found, trying wildcard *.example.com
[Mon Aug 17 20:02:50 2015] [notice] [client ...] [mod_vhost_ldap.c] translate: virtual host not found, trying wildcard *.example.com
[Mon Aug 17 20:02:50 2015] [notice] [client ...] [mod_vhost_ldap.c] translate: virtual host not found, trying wildcard *.example.com
[Mon Aug 17 20:02:50 2015] [notice] [client ...] [mod_vhost_ldap.c] translate: virtual host not found, trying wildcard *.example.com

Как исправить ошибки и реализовать следующее?

Цитата
1. открыв http://www.example.com/ нас переадресует 301 редиректом на http://example.com/
2. открыв http://www.panel.example.com/ нас переадресует 301 редиректом на http://panel.example.com/

Спасибо!
FatCat
Делал подобное. vesvalo.net - основной сайт; плюс любые сабдомены, например есть fatcat.vesvalo.net .


Цитата (Alex_r @ 17.08.2015 - 21:18)
открыв http://www.example.com/ нас переадресует 301 редиректом на http://example.com/

Я сделал мод-реврайтом в директории сайта.


Цитата (Alex_r @ 17.08.2015 - 21:18)
открыв http://www.panel.example.com/ нас переадресует 301 редиректом на http://panel.example.com/

У меня директория subdomens одна для всех сабдоменов. В зависимости от запрошенного сабдомена работают разные сценарии пхп.

_____________
Бесплатному сыру в дырки не заглядывают...
Guest
Цитата (FatCat @ 17.08.2015 - 23:21)
Я сделал мод-реврайтом в директории сайта.

RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
Так? Если да, то не совсем то. Нужно одним правилом скидывать www. и 301 редиректом переадресовывать на нижний уровень, т.е. www.example.com -> example.com, www.panel.example.com -> panel.example.com, ...
killer8080
так попробуй
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Guest
Цитата (killer8080 @ 17.08.2015 - 23:40)
так попробуй

www.example.com -> example.com, www.panel.example.com -> panel.example.com, ...

работает 301, спасибо, остается помучить саппорт, дабы с ошибкой разрулили
Guest
killer8080
если не сложно, хотел бы услышать мнение по поводу таких строк:

1. #Склеиваем index.php с доменом
2. #Принудительная подстановка замыкающего слеша

Они рабочие, но насколько они корректно написаны?

И как очередность выполнения RewriteRule влияет на работу сайта, если вообще влияет? Может нужно выстроить в верном порядке выполнение RewriteRule?
killer8080
Цитата (Guest @ 17.08.2015 - 23:29)
killer8080
если не сложно, хотел бы услышать мнение по поводу таких строк:

1. #Склеиваем index.php с доменом
2. #Принудительная подстановка замыкающего слеша

первое нужно для SEO, второе не обязательно, можно выкинуть

Цитата (Guest @ 17.08.2015 - 23:29)
Они рабочие, но насколько они корректно написаны?

ну рас работают, значит написаны корректно smile.gif
Цитата (Guest @ 17.08.2015 - 23:29)
И как очередность выполнения RewriteRule влияет на работу сайта, если вообще влияет? Может нужно выстроить в верном порядке выполнение RewriteRule?

на эту тему есть хорошая статья на хабре
Guest
Цитата (killer8080 @ 18.08.2015 - 01:30)
первое нужно для SEO, второе не обязательно, можно выкинуть

второе мне нужно, т.к. я завязываю сайт под такие окончания урл - / и .html, т.е. слеш обязателен, там где он нужен

Цитата (killer8080 @ 18.08.2015 - 01:30)
ну рас работают, значит написаны корректно

меня даже не насколько их работоспособность волнует, а корректность написания, качество. понимаю, что можно написать по разному, но хочется максимально правильно писать smile.gif

Цитата (killer8080 @ 18.08.2015 - 01:30)
на эту тему есть хорошая статья на хабре

почитаю с утреца, спасибо
Alex_r
по поводу ошибок, что выше писал, хостер пишет:

Цитата
Работа web-сервера привязана к базе LDAP, запрос всегда сравнивается с этой базой. Если субдомена нет в лдапе-е, то будет ошибка. В данном случае субдомена panel в лдапе нет, о чем Вам и сообщается в логе: Не обнаружен субдомен, попробуйте использовать wildcard *.example.com и делать адресацию .htaccess-ом.
Ошибки такого типа при использовании субдомена * - это нормально.

Цитата
Если первый вариант у вас работает то менять ничего не надо.От Ошибок в логе вида virtual host not found полностю избавится не возможно.

Т.е. они намекают на этот пример кода, который у них на сайте есть, вроде бы ошибки должны пропасть.
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteCond %{HTTP_HOST}---%{REQUEST_URI} ^([^\.]+)\.example\.com---/([^/]+)? [NC]
RewriteCond %1---%2 !^(.*)---\1$ [NC]
RewriteCond %{DOCUMENT_ROOT}/%1/ -d
RewriteRule ^(.*)?$ %1/$1 [QSA,PT]
Этот вариант не подходит, т.к. все папки в корне станут субдоменами. Смирится с ошибками и "засратым" логом?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.