Jump to content


Photo

[Resolvido] DúVidas Sobre Rewriterule


  • Faça o login para participar
5 replies to this topic

#1 willwalker

willwalker

    Turista

  • Usuários
  • 26 posts
  • Sexo:Não informado

Posted 19/08/2010, 13:42

Estou tendo um grande problema com o arquivo .htaccess.

Eu preciso que a pasta /admin seja acessada normalmente sem as instruções do .htaccess, preciso que a instruções sejam aplicadas somente no arquivo produtos.php, mas está redirecionando o endereço sempre para produtos.php, não importa a url. Como eu uso o separador barra ( / ), está dificultando algumas coisas. O arquivo .htaccess está da seguinte forma:

RewriteEngine On

RewriteBase /

Options FollowSymLinks

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d

RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([A-Za-z0-9_áàâãéèêíìîóòôõúùûç()]+)\.php$ produtos.php?m=$1&pag=$2&prod=$3&id=$4 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)\.php$ produtos.php?m=$1&prod=$2&pag=$3 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)\.php$ produtos.php?m=$1&prod=$2&id=$3&pag=$4 [L]
RewriteRule ^([^/]*)/([^/]*)\.php$ produtos.php?m=$1&prod=$2 [L]


Em php $_SERVER['SCRIPT_FILENAME'] mostra o endereço completo e o nome do arquivo que está sendo executado, não sei se em mod_rewrite é a mesma coisa, mas o Isapi está executando as instruções mesmo quando mudo de diretório que seria o /admin.

Então fiz um teste, primeiramente retirei o .htaccess para ver o que poderia ser feito. O diretório /admin claramente voltou a funcionar. Então acrescentei essas tres instruções:

RewriteRule ^admin/$ admin/index.html [L]
RewriteRule ^admin/([^/]*)/([^/]*)/$ admin/$1.php?m=$2 [L]
RewriteRule ^admin/login/$ admin/login.php [L]


Consegui fazer funcionar o login e o acesso ao painel. Mas não é isso que eu quero que seja feito. O Painel é complicado, tem várias urls (com o id= por exemplo) dinâmicas, e tudo que eu preciso é que as regras não se apliquem na pasta /admin. Somente isso. E estou desde ontem a resolver. Se eu mudar também o /admin para urls amigáveis que não é necessário, vou ter um trabalho enorme de mudar tudo.

Alguém pode me ajudar ?

Abraços Walker

#2 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 19/08/2010, 19:03

Veja se assim vai:

RewriteCond $1 != admin
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([A-Za-z0-9_áàâãéèêíìîóòôõúùûç()]+)\.php$ produtos.php?m=$1&pag=$2&prod=$3&id=$4 [L]
RewriteCond $1 != admin
RewriteRule ^([^/]*)/([^/]*)/([^/]*)\.php$ produtos.php?m=$1&prod=$2&pag=$3 [L]
RewriteCond $1 != admin
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)\.php$ produtos.php?m=$1&prod=$2&id=$3&pag=$4 [L]
RewriteCond $1 != admin
RewriteRule ^([^/]*)/([^/]*)\.php$ produtos.php?m=$1&prod=$2 [L]


#3 willwalker

willwalker

    Turista

  • Usuários
  • 26 posts
  • Sexo:Não informado

Posted 19/08/2010, 19:36

Li a sua dica e resolvi de outra forma, fiz o meu arquivo assim:

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^([0-9]*)/([^/]*)/([^/]*)/([0-9]*)/([A-Za-z0-9_áàâãéèêíìîóòôõúùûç()]+)\.php$ produtos.php?m=$1&pag=$2&prod=$3&id=$4 [L]
RewriteRule ^([0-9]*)/([^/]*)/([^/]*)\.php$ produtos.php?m=$1&prod=$2&pag=$3 [L]
RewriteRule ^([0-9]*)/([^/]*)/([0-9]*)/([^/]*)\.php$ produtos.php?m=$1&prod=$2&id=$3&pag=$4 [L]
RewriteRule ^([0-9]*)/([a-z]*)\.php$ produtos.php?m=$1&prod=$2 [L]

Muito obrigado pela ajuda.

Abraços Walker

#4 rafa developer

rafa developer

    Novato no fórum

  • Usuários
  • 7 posts
  • Sexo:Não informado

Posted 20/08/2010, 09:40

Só pra constar, eu ja passei por problemas em que consiguia colocar acento na URL e o Rewriterule compreender, mas pra pegar o valor vinha todo errado, pra resolver isso eh so usar a função utf8_decode(valor da url)
essa função eh milagrosa, passei anos me ferrando por causa do charset utf-8 e agora descobri ela e quero compartilhar para o mundo.
Valew, abraço.

#5 willwalker

willwalker

    Turista

  • Usuários
  • 26 posts
  • Sexo:Não informado

Posted 20/08/2010, 13:30

@LeoB

A dica que você me deu para poder resolver meu problema está errada. O certo seria:

RewriteCond %{REQUEST_URI} !^/admin.*$

No lugar de:

RewriteCond $1 != admin

Abraços Walker

#6 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 20/08/2010, 18:41

Não está. Os dois modos são possíveis.

http://httpd.apache....tml#rewritecond




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq