У меня есть система, в которой у каждого пользователя будет поддомен и собственная база данных. Пример:
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 - просто перехватить некорректные запросы.