Я пытаюсь перенаправить запросы для домена с подстановочными знаками в подкаталог.
т.е. 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$

Вам следует взглянуть на Руководство по перезаписи URL из документации apache.
Следующее не проверено, но должно помочь:
RewriteCond %{HTTP_HOST} ^([^.]+)\.blah\.domain\.com$
RewriteRule ^/(.*)$ http://blah.domain.com/%1/ [L,R]
Это работает, только если субдомен не содержит точек. В противном случае вам придется изменить Regexp в RewriteCond, чтобы он соответствовал любому символу, который все еще должен работать из-за привязки, но это определенно безопаснее.
Попробуй это:
RewriteCond %{HTTP_HOST} (.+)\.blah\.domain\.com
RewriteRule ^(.+)$ /%1/ [L]
@pilif (см. комментарий): Хорошо, это правда. Я только что скопировал .htaccess, который использую в одном из своих проектов. Думаю, у него немного другой подход :)
ваше решение не перенаправляет на blah.domain.com, а просто переписывает на something.blah.domain.com/something, что не так, как я прочитал исходный вопрос.
Я думаю, это нормально, если они оба обслуживаются одним и тем же VirtualHost. В частности, это означает, что клиент не видит перенаправления - он все еще видит something.blah.example.com.
@Сэм
ваша строка RewriteCond неверна. Расширение переменной запускается с помощью%, а не $.
RewriteCond %{HTTP_HOST} ^([^\.]+)\.media\.xnet\.tk$
^
Это должно делать свое дело
Ха! Опечатка с одним символом снова поражает :(
Обратите внимание, «когда НЕ использовать перезапись»: httpd.apache.org/docs/2.2/rewrite/avoid.html#redirect