Перенаправьте все субдомены к подпапкам

Время простоя означает, что Ваш ЦП ничего не делает. Ваша система не выполняет работы, таким образом, Ваш ЦП проводит время, бездействуя.

5
задан 7 July 2012 в 02:47
1 ответ

Какие поставщики DNS позволяют мне это делать?

Все грамотные. Это даже не обязательно должно быть специально для DNS, большинство хороших хостов тоже помогут вам в этом. Есть два этапа:

  1. Запись DNS добавляется для *. Example.com
  2. Веб-сервер хоста (например, Apache) настраивается для ответа на *. Example.com по направляя его на example.com VirtualHost .

Затем на вашем конце вы добавляете запись .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 . Чтобы использовать поддомен, мы используем Chaining , заставляя следующее правило соответствовать

${HTTP_HOST}$1
|           ^ /bob
^ app1.example.com

Строка 4

Последнее RewriteRule теперь соответствует app1.example.com / bob и , а не , а только / bob . В результате он может иметь «полное» регулярное выражение, соответствующее как этому поддомену, так и пути, и выполнять желаемое перенаправление.

Если вам не нужна эта функция, вы можете упростить правила.


Возможны ли эти альтернативы? Перенаправьте их все в специальное веб-приложение со статическим IP-адресом, который перенаправляет в нужную подпапку. Как я могу знать, из какого поддомена они пришли?

Нет надежного способа сделать это. Вы можете попробовать HTTP Referer, но он не всегда отправляется всеми браузерами, некоторые брандмауэры удаляют заголовок и т. Д.

Создавайте каждое правило программно, когда оно мне нужно. Какие поставщики DNS есть доступ к API для добавления правил? Я думаю, что Amazon Route 53 может быть ответьте здесь.

Это фактически привело бы к более сложному решению вышеупомянутого, поэтому я бы не рекомендовал его. Это также приведет к задержке: кеши DNS необходимо обновить, и некоторые посетители не смогут сразу использовать субдомен, пока они этого не сделают. По крайней мере, с моим предложением выше, они смогут начать действовать мгновенно.

8
ответ дан 3 December 2019 в 01:20

Теги

Похожие вопросы