
У меня есть система, в которой у каждого пользователя будет поддомен и собственная база данных. Пример:
usuarioa.system.com
usuariob.system.com
Чтобы сохранить подкаталог на панели навигации при навигации по системе, я использовал следующее правило:
RewriteEngine on
RewriteCond% {HTTP_HOST} ^ usera.system.com $ [OR]
RewriteCond% {HTTP_HOST} ^ www.usera.system.com $
RewriteRule ^ (. *) $ http://www.system.com/access/$ 1? user = usera [P]
Работает отлично, потому что через PHP с помощью $_REQUEST, прямое подключение к нужной базе данных. Проблема в том, что это правило не принимает более одного параметра и любые изменения, которые я делаю, выдают ошибку 403. Поэтому я создал временное решение в PHP, но я не хочу продолжать с ней:
list ($queryString, $id) = explode ("user =", $ _SERVER [' REQUEST_URI ']);
list ($id, $idUsu) = explode (".", $id);
Как мне передать 02 параметра напрямую через htaccess, сохранив подкаталог на панели навигации?
Извините за мой английский, я использую переводчик Bing.
решение1
RewriteRule ^ (. *) $ http://www.system.com/access/$ 1? user = usera [P]
Если вы имеете в виду передачу дополнительных параметров строки запроса, которые были в исходном запросе, взамена, то вам нужен QSA
флаг (Query String Append) в RewriteRule
директиве.
ФлагQSA
сливаетсястроку запроса из запроса со строкой запроса, которую вы указали назамена, в противном случае указанная вами строка запроса перезапишет строку запроса в запросе, и он не будет передан.
Например:
RewriteRule (.*) http://www.system.com/access/$1?user=usera [QSA,P]
В стороне:Этот...
RewriteCond% {HTTP_HOST} ^usera.system.com$ [OR] RewriteCond% {HTTP_HOST} ^www.usera.system.com$
То же самое, что и следующее, и также допускает полное доменное имя (заканчивающееся точкой):
RewriteCond% {HTTP_HOST} ^(www\.)?usera\.system\.com [NC]
Не забудьте экранировать точки, чтобы сопоставить их с буквальными точками, в противном случае вы сопоставляетелюбойсимвол. NC
Флаг просто отлавливает неправильно сформированные запросы.