Назад | Перейти на главную страницу

Я пытаюсь написать файл htaccess, выполняет аутентификацию и перенаправляет аутентифицированных пользователей в авторизованные каталоги. Может ли кто-нибудь помочь мне с синтаксисом условия?

Это то, что у меня есть, но я не могу правильно получить 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).