Перезапись Apache на основе поддомена

Я пытаюсь перенаправить запросы для домена с подстановочными знаками в подкаталог. т.е. something.blah.example.com -> blah.example.com/something

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

Окончательное решение:

RewriteCond %{HTTP_HOST} !^blah\.example\.com
RewriteCond %{HTTP_HOST} ^([^.]+)
RewriteRule ^(.*) /%1/ [L]

Или, как указал пилиф

RewriteCond %{HTTP_HOST} ^([^.]+)\.blah\.example\.com$
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
30
0
37 592
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вам следует взглянуть на Руководство по перезаписи URL из документации apache.

Следующее не проверено, но должно помочь:

RewriteCond %{HTTP_HOST} ^([^.]+)\.blah\.domain\.com$
RewriteRule ^/(.*)$           http://blah.domain.com/%1/ [L,R] 

Это работает, только если субдомен не содержит точек. В противном случае вам придется изменить Regexp в RewriteCond, чтобы он соответствовал любому символу, который все еще должен работать из-за привязки, но это определенно безопаснее.

Обратите внимание, «когда НЕ использовать перезапись»: httpd.apache.org/docs/2.2/rewrite/avoid.html#redirect

marcovtwout 03.10.2012 13:09

Попробуй это:

RewriteCond %{HTTP_HOST} (.+)\.blah\.domain\.com
RewriteRule ^(.+)$ /%1/ [L]

@pilif (см. комментарий): Хорошо, это правда. Я только что скопировал .htaccess, который использую в одном из своих проектов. Думаю, у него немного другой подход :)

ваше решение не перенаправляет на blah.domain.com, а просто переписывает на something.blah.domain.com/something, что не так, как я прочитал исходный вопрос.

pilif 08.09.2008 15:33

Я думаю, это нормально, если они оба обслуживаются одним и тем же VirtualHost. В частности, это означает, что клиент не видит перенаправления - он все еще видит something.blah.example.com.

Ted Percival 08.09.2008 15:42

@Сэм

ваша строка RewriteCond неверна. Расширение переменной запускается с помощью%, а не $.

RewriteCond %{HTTP_HOST} ^([^\.]+)\.media\.xnet\.tk$
            ^

Это должно делать свое дело

Ха! Опечатка с одним символом снова поражает :(

Sam 10.09.2008 02:13

Другие вопросы по теме