Ответ 1
Это подстановочное решение, поэтому оно может работать для любого количества поддоменов.
Это перенаправит domain.com/foo/bar
в foo.domain.com/bar
:
RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
RewriteRule ([^/]+)(/.*|$) $1.domain.com/$2 [R=302]
Это будет обрабатывать (внутреннее переписывание) виртуальных хостов:
RewriteCond %{HTTP_HOST} ^(.*).domain.com$ [NC]
RewriteRule (.*) %1/$1 [L]
Вы можете использовать 301 (постоянный переадресацию) вместо 302.
Я настоятельно рекомендую вам иметь VirtualHost
для вашего основного сайта domain.com или www.domain.com и отдельный для обработки виртуальных поддоменов.
Только для определенного поддомена:
RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
RewriteRule (subdomain)(/.*|$) $1.domain.com/$2 [R=302,L]
RewriteCond %{HTTP_HOST} ^(subdomain).domain.com$ [NC]
RewriteRule (.*) %1/$1 [L]