Apache: (нет) тривиальное переписывание поддоменов - PullRequest
0 голосов
/ 15 сентября 2011

У меня есть (по крайней мере для меня) нетривиальная задача с проектом, работающим на Apache2 VHost.

Предполагая, что я являюсь владельцем домена 'foobar.com' и создал 'подстановочный знак перехватывать все' для всех поддоменов на панели конфигурации моего регистратора, я хотел бы добиться следующего:

Каждый запрос к api.foobar.com должен пройти. Каждый запрос, идущий на «* .foobar.com», где * - это все, кроме api, следует переписать на «foobar.com»

Кажется, я не могу написать правильное условие и правило перезаписи. Кто-нибудь может помочь?

Спасибо и всего наилучшего.

Felix

1 Ответ

0 голосов
/ 15 сентября 2011

Вы можете сделать это следующим образом.

RewiteEngine ON

RewriteCond ${HTTP_HOST} !^api\.foobar\.com$
RewriteCond ${HTTP_HOST} !^foobar\.com$
RewriteRule ^/?(.*)$ "http\:\/\/foobar\.com\/$1" [R=301,L]

Здесь вы перенаправляете любой URL с хоста, отличного от api.foobar.com ИЛИ foobar.com на foobar.com

Приведенные выше записи добавляют URL, если вы не хотите, вы можете пропустить $1 в директиве RewriteRule

Updtae
GeorgieF (OP) предложил следующееи регулярное выражение также работает:

RewriteCond ${HTTP_HOST} !^(api\.)?foobar\.com$ [OR]
RewriteRule ^/?(.*)$ "http\:\/\/foobar\.com\/$1" [R=301,L]
...