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

Передайте более одного параметра с помощью htaccess

У меня есть система, в которой у каждого пользователя будет поддомен и собственная база данных. Пример:

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.

RewriteRule ^ (. *) $ http://www.system.com/access/$ 1? user = usera [P]

Если вы имеете в виду передачу дополнительных параметров строки запроса, которые были в исходном запросе, через замена, тогда вам понадобится QSA (Добавление строки запроса) на 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 flag - просто перехватить некорректные запросы.