Попробуйте это:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$
RewriteCond %1 !=www
RewriteRule ^(.*)$ http://www.domain.com/users/%1/$1 [R=302,L]
Если пользователь посетит tom.domain.com/directory1/directory2/directory3/file.html
, он будет перенаправлен (URL будет изменен в браузере) на www.domain.com/users/tom/directory1/directory2/directory3/file.html
.
Если это не такто, что вы действительно после (поскольку я немного запутался в вашей «замаскированной» концепции), пожалуйста, объясните ваши требования лучше, чтобы я мог скорректировать правило.
ОБНОВЛЕНИЕ: Чтобы сохранить URL-адрес в браузере без изменений:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/users/
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$
RewriteCond %1 !=www
RewriteRule ^(.*)$ /users/%1/$1 [L]
Есть одна проблема , хотя: если directory1
будет называться users
(например, tom.domain.com/users/directory2/directory3/file.html
), то это не будет работать- это цена, которую вы платите за переписывание. Решение: переименовать users
во что-то уникальное (например, users_dir_123_abc
и т. Д. - www.domain.com/users_dir_123_abc/tom/users/directory2/directory3/file.html
).