|
|
|
||||||||||||||||||||||
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Parceiros - CSS para Web Design - S.O.S Designers - Slackware-Brasil - Crie seu Web site - Oficina da Net - Codigo Fonte.net |
Redirecionamentos cíclicos com .htaccessUm erro típico ao realizar redirecionamentos com htaccess é criar um redirecionamento cíclico. Nosso manual de criar URLs amigáveis a buscadores com htaccess continua comentando alguns dos erros típicos que se podem cometer na hora de definir as regras de redirecionamento.
Em minha experiência com .htacces encontrei de uma forma fácil fazer um redirecionamento cíclico. Ou seja, definir um RewriteRule com um padrão que redireciona a uma URL que segue cumprindo o padrão. Como essa segunda URL concorda ainda com o padrão, se voltará a redirecionar e continuará cumprindo o padrão, com o que se voltará a redirecionar. E assim indefinidamente. Ao escrever um endereço do domínio que cumpra o padrão, o resultado deste problema de redirecionamento cíclico será que Apache nos apresentará um erro "Internal Server Error", porém não será muito mais descritivo, por isso poderia se complicar para identificar o problema. Observemos nesta regra de redirecionamento: RewriteRule ^dir/(.+)\.php dir/codigo.php?artigo=$1 Quer dizer que qualquer URL do diretório "dir" que acabe em .php, se redirecionará ao dir/codigo.php?artigo=xxx. Por exemplo: http://www.meudominio.com/dir/oqueseja.php Redirecionará a: http://www.meudominio.com/dir/codigo.php?artigo=oqueseja Como se pode ver, a URL a que se redirecionará cumpre também o padrão, porque a URL a que se acessa também está dentro do diretório "dir" e acaba em PHP. (Não se tem em conta para comprovar o padrão, o parâmetro que se passa pela URL) Esse RewriteRule seria incorreto, por padecer um redirecionamento cíclico. Para solucioná-lo podemos fazer várias coisas. Por exemplo, redirecionar a uma URL que não esteja dentro do diretório dir. RewriteRule ^dir/(.+)\.php codigo-dir/codigo.php?artigo=$1 Isto funcionaria bem. A URL de antes http://www.meudominio.com/dir/oquefor.php Será redirecionada para http://www.meudominio.com/codigo-dir/codigo.php?artigo=oquefor Outra solução que às vezes utilizei é redirecionar endereços acabados em .html a endereços acabados em .php. Como as terminações são distintas, não haverá redirecionamentos cíclicos: RewriteRule ^dir/(.+)\.html dir/codigo.php?artigo=$1 Por exemplo, para a URL: http://www.meudominio.com/dir/outracoisa.html Será redirecionado a: http://www.meudominio.com/dir/codigo.php?artigo=oquefor Esta última URL, como não acaba em .html não cumprirá o padrão e não teremos o redirecionamento cíclico.
Autoria e outras referências sobre este artigo Dentro deste artigo: + 1 manual relacionado + 1 categoria relacionada
Manuais relacionados com este artigo Dentro de Editar htaccess para criar endereços URL amigáveis Anterior: Não ter duas URL com os mesmos conteúdos Categorias relacionadas Através das categorias do nosso diretório podem ser encontrados outros tipos de recursos relacionados com este artigo: + Entrar em ApacheComentários dos visitantes Os comentários dos visitantes são para ampliar a informação do artigo. Todos podem participar.
|
||||||||||||||||||
| Sobre nós | Copyright | Anuncie | Entrar em contato | <criarweb> |