Jump to content


Photo

Problema Com Urls Amigáveis


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

#1 Alexandre Lacerda

Alexandre Lacerda

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Masculino
  • Localidade:Santo Antônio do Monte - MG

Posted 23/12/2009, 15:01

Boa tarde,

Estou tentando empregar o uso de URLs amigáveis, utilizando a técnica mod_rewrite.
Configurei o Apache certinho, mas o problema esta no .htaccess, mais especificamente, na expressão regular, creio.

Para que vocês possam ver:

RewriteEngine on

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

RewriteRule !\.(jpg|gif|css|swf|txt|js|png)$ erro.php
RewriteRule ^artigo/([0-9]+)/(.*?) artigo.php?id=$1&cat=$2

se eu tirar a linha:

RewriteRule !\.(jpg|gif|css|swf|txt|js|png)$ erro.php


funciona, mas, se eu digitar alguma url inválida, logicamente, vai ocorrer o erro 404. Entretanto, gostaria que ele redirecionasse para a pagina "erro.php".

se alguém puder ajudar, desde já agradeço!
Obrigado.

#2 FelipeGabriel

FelipeGabriel

    Normal

  • Usuários
  • 66 posts
  • Sexo:Masculino
  • Localidade:Patrocínio - MG

Posted 23/12/2009, 15:39

Existe uma Maneira Mais Fácil de se fazer URL Amigavel,

Como:

RewriteEngine on
RewriteRule !\.(gif|jpg|png|css|js|ico|swf|txt|xml)$ index.php



Depois é so manipular com PHP, para maiores detalhes veja este video explicando passo a passo:

http://www.videotutoriais.net/?p=63

http://www.videotuto...od_rewrite.html

#3 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 23/12/2009, 15:49

Explique melhor o que você quer e o que você não quer.

[]’s Até mais

#4 Alexandre Lacerda

Alexandre Lacerda

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Masculino
  • Localidade:Santo Antônio do Monte - MG

Posted 23/12/2009, 16:15

Explique melhor o que você quer e o que você não quer.

[]’s


do jeito que esta meu .htaccess não esta funcionando, se eu entro com a url:
www.meusite.com.br/artigos/1/php
ele me redireciona para erro.php

se eu tiro esta linha, :
RewriteRule !\.(jpg|gif|css|swf|txt|js|png)$ erro.php
irá funcionar! ( aceita eu digitar: www.meusite.com.br/artigos/1/php)..

mas, quando eu digito algum endereço errado, gera o erro 404 (isso se eu tiro a linha acima), só que eu gostaria que ele me redirecionasse para 'erro.php', configurando no .htaccess!

entendeu?

valeu ai pela ajuda! ;)

Edição feita por: Alexandre Lacerda, 23/12/2009, 16:17.


#5 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 23/12/2009, 17:45

Ah, claro, agora entendi. Neste caso é heresia fazer isto com mod_rewrite. Para situações como esta você tem a diretiva ErrorDocument para tratar os erros:

ErrorDocument 404 /erro.php
Simples assim. Isso pode vir antes ou depois do código do mod_rewrite, não há problemas. ;-)

No PHP (nsete caso, erro.php), é possível obter informações sobre a requisição que falhou. Digamos que tentamos acessar o endereço www.meusite.com.br/nao-existe.php?id=1. Veja só o que podemos obter com isto:

<?php

var_dump($_SERVER['REDIRECT_STATUS'],    // 404
    $_SERVER['REDIRECT_REQUEST_METHOD'], // GET
    $_SERVER['REDIRECT_URL'],            // /nao-existe.php
    $_SERVER['REDIRECT_QUERY_STRING']);  // id=1

?>
Interessante, não? :)

Você nem precisa ter uma página erro.php, você pode usar a própria index.php (por exemplo) para tal, basta verificar pela presença das chaves REDIRECT_* na requisição. ;-)

[]’sAté mais

#6 Alexandre Lacerda

Alexandre Lacerda

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Masculino
  • Localidade:Santo Antônio do Monte - MG

Posted 24/12/2009, 07:35

Ah, claro, agora entendi. Neste caso é heresia fazer isto com mod_rewrite. Para situações como esta você tem a diretiva ErrorDocument para tratar os erros:

ErrorDocument 404 /erro.php
Simples assim. Isso pode vir antes ou depois do código do mod_rewrite, não há problemas. ;-)

No PHP (nsete caso, erro.php), é possível obter informações sobre a requisição que falhou. Digamos que tentamos acessar o endereço www.meusite.com.br/nao-existe.php?id=1. Veja só o que podemos obter com isto:

<?php

var_dump($_SERVER['REDIRECT_STATUS'],    // 404
    $_SERVER['REDIRECT_REQUEST_METHOD'], // GET
    $_SERVER['REDIRECT_URL'],            // /nao-existe.php
    $_SERVER['REDIRECT_QUERY_STRING']);  // id=1

?>
Interessante, não? :)

Você nem precisa ter uma página erro.php, você pode usar a própria index.php (por exemplo) para tal, basta verificar pela presença das chaves REDIRECT_* na requisição. ;-)

[]’s


hum, bem interessante, não só meu ajudou com o código, como clareou isso pra mim!
valeu mesmo!!
;)




1 user(s) are reading this topic

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

IPB Skin By Virteq