Passa mais de um parametro por htaccess

1

Eu tenho um sistema onde cada usuário terá um subdomínio e seu próprio banco de dados. Ex:

usuarioa.system.com
usuariob.system.com

Para manter o subdiretório na barra de navegação enquanto navega pelo sistema, usei a seguinte regra:

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]

Ele está funcionando perfeitamente, porque através do PHP usando $ _REQUEST, conexão direta com o banco de dados correto. O problema é que essa regra não está aceitando mais de um parâmetro e qualquer alteração que eu faça, dá erro 403. Então criei uma solução temporária em PHP, mas não quero continuar com ela:

list ($queryString, $id) = explode ("user =", $ _SERVER [' REQUEST_URI ']);
list ($id, $idUsu) = explode (".", $id);

Como eu poderia passar 02 parâmetros diretamente via htaccess mantendo o subdiretório na barra de navegação?

Desculpe pelo meu inglês, estou usando o tradutor do Bing.

    
por Fox.11 24.08.2018 / 01:04

1 resposta

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

Se você estiver se referindo a passar parâmetros de string de consulta adicionais que estavam na solicitação original até a substituição , precisará do sinalizador QSA (Query String Append) na diretiva RewriteRule .

O QSA flag mescla a string de consulta da solicitação com a string de consulta que você especificou na substituição , caso contrário, a string de consulta que você declarou sobrescreverá a string de consulta na solicitação e ela não será transmitida.

Por exemplo:

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

Além de: Isto ...

RewriteCond% {HTTP_HOST} ^usera.system.com$ [OR]
RewriteCond% {HTTP_HOST} ^www.usera.system.com$

É o mesmo que o seguinte e também permite o FQDN (terminando em um ponto):

RewriteCond% {HTTP_HOST} ^(www\.)?usera\.system\.com [NC]

Lembre-se de escapar os pontos para combinar com um ponto literal, caso contrário, você está combinando com qualquer personagem. O NC flag é simplesmente para capturar solicitações malformadas.

    
por 24.08.2018 / 01:25

Tags