Если не пройдет $env{'http_host'}, можно анализировать $env{'server_name'} - он также тодержит имя хоста, а именно оно и нужно.
Я так понимаю, что
1. есть сервер site.ru, а все вызовы username.site.ru все равно фактически обращаются к нему (т.е. это как бы дополнительные имеа того же сервера, алиасы).
2. при обращении к username.site.ru/... должно загружаться содержимое /users/username/..., но не простое перенаправление, а на скрипт, который будет выводить страницу.
Настраиваем MOD_Rewrite:
Код:
RewriteRule ^(.*)\.html$ /index.php?url=$1 [NE]
которое будет перенаправлять, например vasja.site.ru/1/a.html на vasja.site.ru/index.php?url=1/a, при этом имя скрипта показываться не будет. Поскольку vasja.site.ru и site.ru это фактически один хост, файл index.php - один для всех и лежит в его корне. В этот скрипт передается параметр url - открываемая страница (обозначим $pagepath). Скрипт смотрит на запрос (ентот самый vasja.site.ru/1/a.html, отобаражаемый в адресоной строке браузера), выковыривает из него имя пользователя, т.е. "vasja" (обозначим $username). Потом скрипт открывает файл "/users/$username/$pagepath.html" (в нашем случае /users/vasja/1/a.html) и выводит его. Кажись, я все правильно понял...
Что обозначает параметр [NE] уже, честно говоря, не помню - выковырял строку из конфига своего сервера.