Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde,alterei o sistema de url amigável do meu site e estou com problema quanto ao htacces,ele funciona normalmente
quando uso a seguinte tag
RewriteRule ^noticia/(.)/(.)([A-Za-z-]*).html index.php?pg=noticia&id=$1
porém em algumas situações vou precisar guardar no banco de dados via get,a variavel $ref que é o id de quem indicou a noticia.
eu fiz dessa forma e funcionou.
RewriteRule ^noticia/(.)/(.)([A-Za-z-]).html(.) index.php?pg=noticia&id=$1$ref=4
Porém eu estou com problemas,pois se eu usar esse código,sempre que alguém acessar sem o id de referência na url não vai conseguir abrir a notícia,isso vai acontecer sempre que acessarem meu site pela index.
apenas vai conseguir ver a notícia se colocar algum id de referência.
teria alguma forma de colocar um if,para caso tenha a variavel ref na url,acessar e enviar para o banco normalmente,mas caso não tenha,acessar a mesma notícia da mesma forma.
Abaixo está meu htaccess inteiro
RewriteEngine on
ErrorDocument 404 /erro_404.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^noticia/(.)/(.)([A-Za-z-]*).html index.php?pg=noticia&id=$1
AddHandler application/x-httpd-php52 .php52 .php
>
Basta usar a flag QSA...
RewriteRule ^noticia/(.)/(.)([A-Za-z-]*).html index.php?pg=noticia&id=$1 [QSA]
https://httpd.apache.org/docs/current/rewrite/flags.html
Coloquei dessa forma,porém continua mostrando página 404 quando acessa sem o ref.
RewriteRule ^noticia/(.)/(.)([A-Za-z-]).html/(.) index.php?pg=noticia&id=$1&ref=$4 [QSA]
Compara com o que eu postei e veja se nota alguma diferença...
Compara com o que eu postei e veja se nota alguma diferença...
A $ref,preciso que a noticia seja visualizada tanto com ref como sem,e quando estou incluindo ref no htaccess está funcionando bem,porém quando vai ler a noticia sem o ref da erro 404.
?
Tchê, ninguém vai pegar na tua mão e te levar, já te passei o negócio pronto e inclusive passei a literatura acerca do tema, cabe a você correr atrás...
Se isto funciona:
RewriteRule ^noticia/(.)/(.)([A-Za-z-]*).html index.php?pg=noticia&id=$1
Então basta:
RewriteRule ^noticia/(.)/(.)([A-Za-z-]*).html index.php?pg=noticia&id=$1 [QSA]
O que é QSA? Leia o manual que passei no post #2.
>
Tchê, ninguém vai pegar na tua mão e te levar, já te passei o negócio pronto e inclusive passei a literatura acerca do tema, cabe a você correr atrás...
Se isto funciona:
RewriteRule ^noticia/(.)/(.)([A-Za-z-]*).html index.php?pg=noticia&id=$1
Então basta:
RewriteRule ^noticia/(.)/(.)([A-Za-z-]*).html index.php?pg=noticia&id=$1 [QSA]
O que é QSA? Leia o manual que passei no post #2.
Infelizmente sobre esse tema não explica muito na web,estou a 2 dias pesquisando sobre o QSA mas não encontrei nada idêntico ao que preciso,fiz vários testes em meu servidor colocando o código de várias formas e não funcionou,vc diz que está pronto,será que entendeu o que preciso? falta o mais importante ai nesse código,a $ref que aparecerá de vez em quando.
...você diz que está pronto,será que entendeu o que preciso? falta o mais importante ai nesse código,a $ref que aparecerá de vez em quando.
Se você apenas se der ao trabalho de ler o link que eu te passei verá que não falta $ref algum... quando você usa uma URL amigável a querystring que você passa é descartada, o que o QSA faz é apenas garantir que a querystring seja incluída, por isso não é necessário nenhuma modificação na ER que você fez...
>
Se você apenas se der ao trabalho de ler o link que eu te passei verá que não falta $ref algum... quando você usa uma URL amigável a querystring que você passa é descartada, o que o QSA faz é apenas garantir que a querystring seja incluída, por isso não é necessário nenhuma modificação na ER que você fez...
na minha url leva o titulo da notícia tbm
então no caso eu precisaria incluir um outro (.*)
RewriteRule ^noticia/(.)/(.)([A-Za-z-])(.).html index.php?pg=noticia&id=$1 [QSA]
Correto?
Cara, posta ai como você está acessando isso tudo, a URL que você digita no navegador.
meu htaccess no momento está assim
RewriteEngine on
ErrorDocument 404 /erro_404.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^noticia/(.)/(.)([A-Za-z-]).html/(.) index.php?pg=noticia&id=$1&ref=$4 [QSA]
Agora no meu site dessa forma abaixo da erro 404(Esse link é o que fica disponível na página inicial do site)
mas a url abaixo além de funcionar ainda cadastra o id da variavel ref corretamente no bd(Esse link é com a indicação de um usuário)
Usei esse exemplo para vc ter uma idéia pois ja tentei colocar a variável ref em vários lugares de todos os jeitos.
Ok, pensei que você estava usando uma querystring mesmo e não isto, então tente:
RewriteRule ^noticia/(.)/(.)([A-Za-z-]).html/?(.)$ index.php?pg=noticia&id=$1&ref=$4
>
Ok, pensei que você estava usando uma querystring mesmo e não isto, então tente:
RewriteRule ^noticia/(.)/(.)([A-Za-z-]).html/?(.)$ index.php?pg=noticia&id=$1&ref=$4
Funcionou perfeitamente,muito obrigado pela paciência.
Basta usar a flag QSA...
RewriteRule ^noticia/(.)/(.)([A-Za-z-]*).html index.php?pg=noticia&id=$1 [QSA]
https://httpd.apache.org/docs/current/rewrite/flags.html