Перенаправить все субдомены в подпапки
Я хотел бы добавить правило, чтобы все субдомены перенаправлялись в подпапку. Например:
app1.example.com -> example.com/app1
app2.example.com -> example.com/app2
something.example.com -> example.com/something
Все субдомены будут иметь только один уровень.
Вопросы
- Какие DNS-провайдеры позволяют мне это делать?
- Возможны ли эти альтернативы?
- Перенаправьте их все в специальное веб-приложение со статическим IP-адресом, которое перенаправляет в соответствующую подпапку. Как я могу узнать, из какого субдомена они пришли?
- Программно создавайте каждое правило, когда мне это нужно. Какие провайдеры DNS имеют доступ API для добавления правил? Я думаю, что Amazon Route 53 может быть ответом здесь.
1 ответ
Какие DNS-провайдеры позволяют мне это делать?
Все грамотные. Это даже не должно быть специфичным для DNS предоставлением, большинство хороших хостов также поможет вам в этом. Есть два этапа:
- Добавлена запись DNS для
*.example.com
- Веб-сервер хоста (например, Apache) настроен для ответа на
*.example.com
направляя его кexample.com
"sVirtualHost
,
Затем, в конце концов, вы добавляете .htaccess
запись, которая использует RewriteRule
перехватить каждый поддомен и перенаправить его в папку, используя HTTP_HOST
переменная.
Не проверено, но как-то так:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[^.]+\.example\.com$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+)\.example\.com(.*) http://example.com/$1/$2
Предположим, что пользователь запрашивает app1.example.com/bob
,
Линия 2
Это поймает app1.example.com
в HTTP_HOST
- это будет соответствовать RewriteCond
,
Линия 3
Обычно Apache только пройдет /bob
быть проверенным против RewriteRule
, Чтобы использовать поддомен, мы используем цепочку, заставляя следующее правило соответствовать
${HTTP_HOST}$1
| ^ /bob
^ app1.example.com
Строка 4
Финал RewriteRule
сейчас совпадает с app1.example.com/bob
и не только /bob
, В результате, оно может иметь "полное" регулярное выражение, чтобы соответствовать как этому поддомену, так и пути, и выполнять желаемое перенаправление.
Если вы не хотите эту функцию, вы можете упростить правила.
Возможны ли эти альтернативы? Перенаправьте их все в специальное веб-приложение со статическим IP-адресом, которое перенаправляет в соответствующую подпапку. Как я могу узнать, из какого субдомена они пришли?
Нет надежного способа сделать это. Вы можете попробовать HTTP Referer, но он не всегда отправляется всеми браузерами, некоторые брандмауэры удаляют заголовок и т. Д.
Программно создавайте каждое правило, когда мне это нужно. Какие провайдеры DNS имеют доступ API для добавления правил? Я думаю, что Amazon Route 53 может быть ответом здесь.
Это фактически привело бы к более сложному решению вышеупомянутого, поэтому я бы не рекомендовал его. Это также может привести к задержке: DNS-кэши должны будут обновиться, и некоторые посетители не смогут использовать субдомен немедленно, пока не сделают это. По крайней мере, с моим предложением выше, они могли бы начать немедленно.