Apache переписывается на основе субдомена

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

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

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

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

Или, как указано пилифом

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

Ответ 1

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

Следующее не проверено, но оно должно быть трюком:

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

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

Ответ 2

Попробуйте следующее:

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

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

Ответ 3

@Сэм

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

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

который должен сделать трюк