Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
RewriteRule ^teste/([a-zA-Z-]+).html /index.php?var=$1
http://localhost/teste/lendo-teste.html
na index.php eu pego a get['var'] numa boa
depois apareceu outra necessidade... exemplo
http://localhost/teste/lendo-teste.html?color=red
então, precisaria passar a VAR pela regra ER e os parametros que vierem
RewriteRule ^teste/([a-zA-Z-]+).html /index.php?var=$1 [QSA]
http://localhost/teste/lendo-teste.html?color=red
ate então estava beleza, exibindo o texto 'lendo-teste', mas fui testar ?color=red&var='outro-teste'
o resultado foi que ele 'sobrescreveu' a ER quando usei [QSA]
preciso de uma regra que não sobrescreva a ER mesmo tendo um parametro igual
é possivel???
http://localhost/teste/lendo-teste.html?color=red&var='outro-teste'
RewriteRule ^teste/([a-zA-Z-]+).html /index.php?var=$1
precisa manter o $1 independente de possuir o parametro VAR declarado na url
[]s
RewriteRule ^teste/([a-zA-Z-]+)\.html(\?.*)? teste.php?var=$1$2 [L,QSA]
http://localhost/teste/teste-texto.html?a=1&b=2&var=opa
Array
(
**[var] => opa**
[a] => 1
** => 2**
)
mesmo com o grupo 'extra' a query sobrescreveu
como posso limitar os caracteres apos ? na url
**RewriteRule ^teste/([a-zA-Z-]+)\.html(\?.*)?**
Amigo,
Basta criar um grupo para capturar o que vem depois do ? da query string:
RewriteEngine On
RewriteRule ^teste/([a-zA-Z-]+)\.html(\?.*)? index.php?var=$1$2 [L,QSA]
O L ali indica Last, se não houver nenhuma regra posterior você pode deixá-lo ali, caso haja outras regras, remova o L e adicione na última regra.
O QSA significa Query String Append, isso significa que se houver uma query string na URL reescrita, existirá um ?, o QSA vai substituir esse ? por & já que a nova URL já possui um ?
Um detalhe importante é o uso dos caracteres "especiais" em uma expressão regular, na sua regra você disse ([a-zA-Z-]+).html
Esse ponto ai significa "qualquer coisa" e fará com que testehtml (sem ponto) seja válido para sua expressão e, definitivamente, não é o que você quer. Quando você precisar do literal ponto, você precisa "escapá-lo", isso ocorre para qualquer outro caractere especial.
;)