Это то, что у меня есть, но я не могу правильно получить RewriteCond и RewriteRule.
RewriteEngine On
RewriteCond %{LA-U:REMOTE_USER} (\d{3})$
RewriteRule !^%1 http://subdomain.mydomain.com/%1 [R,L].
AuthName "My Domain Protected Area"
AuthType Basic
AuthUserFile /path/to/my/.htpasswd
Require valid-user
Вот что я имею в виду ReWriteCond and RewriteRule
сказать:
"Если REMOTE_USER имеет имя пользователя, оканчивающееся на 3 цифры, тогда захватите три совпадающие цифры и для любого URL-адреса, к которому они пытаются получить доступ, если он не начинается с захваченных 3 цифр, затем перенаправьте их в подкаталог с именем, равным тем захвачены три цифры ".
Другими словами, если пользователь с именем johnny202 аутентифицирован, то если он запрашивает любой каталог, кроме http://subdomain.mydomain.com/202/ тогда он должен быть перенаправлен на http://subdomain.mydomain.com/202/
Единственное, что я считаю неправильным, - это первый экземпляр "% 1".
Что нужно запомнить с mod_rewrite - он соответствует правилу перед смотрит на условия, поэтому на момент проверки шаблона правила он не выполнил ни одного из условий и еще не настроил обратную ссылку% 1. Я бы попробовал разделить проверку URL-адреса на второе условие - что-то вроде следующего
RewriteCond %{REMOTE_USER} ([0-9]{3})$
RewriteCond %{REQUEST_URI} !^/%1
RewriteRule ^.*$ http://subdomain.mydomain.com/%1 [R,L].
Таким образом, правило будет соответствовать каждому запросу, поэтому условия будут всегда проверяться, но перенаправление должно происходить только в том случае, если запрос не начинается с «правильного» номера.
N.b. Я вынул LA-U в первом состоянии - насколько я понимаю, он вам не нужен, если он находится в файле .htaccess (только если перезапись находится в основной конфигурации Apache).