Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

richard nicson

If no Htaccess

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compara com o que eu postei e veja se nota alguma diferença...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

...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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, posta ai como você está acessando isso tudo, a URL que você digita no navegador.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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)

http://www.brmaster.inf.br/noticia/6573/pai-se-passa-por-filha-de-11-anosmarca-encontro-e-espanca-pedofilo.html

 

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)

http://www.brmaster.inf.br/noticia/6573/pai-se-passa-por-filha-de-11-anosmarca-encontro-e-espanca-pedofilo.html/2083

 

 

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.