Ir para conteúdo

POWERED BY:

Arquivado

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

Anderson Ferreira

Negar palavra com expressão regular

Recommended Posts

Estou criando URL amigável para meu site. Seria algo como: www.teste.com/parametro_da_url_amigavel

 

Ele pega o "parametro_da_url_amigavel", e reedireciona pra página www.teste.com/?post=parametro_da_url_amigavel

 

Porém, eu quero negar uma palavra nesse "parametro_da_url_amigavel". Quero negar a palavra "blog", que é um diretório com o blog do site, e não um post que será pego do banco de dados.

 

 

Pra ser sincero, não entendo NADA de expressão regular. Abaixo está a do meu site, porém adianto que não foi feita por mim. Peguei pronta da internet.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(!.(\.gif|\.jpg|\.png|\.css|\.js|\.txt|\.php|\.htm|\.html)|.+[^/])$ /$1/ [L]
RewriteRule ^([^-]+)/$ /pt-br/loja/urlamigavel/$1&%{QUERY_STRING} [L]

 

 

Já tentei algunas formas, que aprendi nesse site: http://aurelio.net/regex/guia/negar-palavra.html, só que foram tentativas em vão :(

 

 

Alguém pode me ajudar? Resumindo seria reedirecionar normalmente pra outra página, somente se fosse diferente da palavra "blog" o parametro recebido. Caso contrário, carregar normalmente o diretório /blog.

 

 

 

Obrigado a todos,

Anderson Ferreira

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como negar uma palavra é virtualmente impossível, experimenta criar mais uma RewriteRule negativa, isto é, iniciada com a exclamação.

 

E outra coisa, atente para as flags que você está usando ( [L] ) pode e irá interromper a próxima regra

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como negar uma palavra é virtualmente impossível, experimenta criar mais uma RewriteRule negativa, isto é, iniciada com a exclamação.

 

E outra coisa, atente para as flags que você está usando ( [L] ) pode e irá interromper a próxima regra

 

E como crio uma RewriteRule negativa, ignorando a palavra "blog", ou mais simples ainda, ignorando diretórios?

Eu imaginei que o "RewriteCond %{REQUEST_FILENAME} !-d" ignoraria diretórios, mas pelo visto não =(

 

E sobre o flag "[L]", eu não sei pra que serve. Como comentei, meu conhecimento em expressão regular é 0. Eu deveria tira-lo então? Ou deixá-lo?

 

 

Obrigado,

Anderson Ferreira

Compartilhar este post


Link para o post
Compartilhar em outros sites

A flag [L], de "last", indica que se a expressão casar com aquela ER, ela deve ser a última, como se fosse um "break".

Por padrão, o apache tenta procurar em TODAS as regras do arquivo .htaccess.

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.