djhowell был почти там:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$
RewriteRule ^/dir(/.*)?$ http://dir.domain.com$1 [R=301,L]
Вам нужна ведущая наклонная черта в RewriteRule
или ничто не будет соответствовать. (/.*)?$
разрядные средства соответствуют 0 или 1 блоку slash-then-anything затем затем конец URI. (Это важно - без него мы также соответствовали бы www.domain.com/dirsomethingelse
).
www.domain.com/dir -> dir.domain.com
www.domain.com/dir/ -> dir.domain.com/
www.domain.com/dir/blah.html -> dir.domain.com/blah.html