Criar Web, manuais e recursos para desenvolvimento web
Manuais
Programas
FAQS
Diretório
Comunidade
  Inicio > Manuais > Editar htaccess para criar endereços URL amigáveis
SEÇÕES
Manuais relacionados
+Editar htaccess para criar endereços URL amigáveis
Categorias
+Apache

Índice do Manual Editar htaccess para criar endereços URL amigáveis
+ Introdução a .htaccess e às URLs amigáveis a buscadores
+ Redirecionamento de URLs a buscadores para URLs com passo de parâmetros
+ Exemplo mais complexo de RewriteRule
+ Não ter duas URL com os mesmos conteúdos
+ Redirecionamentos cíclicos com .htaccess
+ Mudança de URL redirecionamento 301 com .htaccess
+ Caractere $ para finalizar os padrões de redirecionamento com .htaccess
+ Padrões de expressões regulares para htaccess
+ Mais exemplos de regras .htaccess

Descrição dos capítulos

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

Um 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

Manuais relacionados com este artigo
Dentro de Editar htaccess para criar endereços URL amigáveis

Categorias relacionadas
Através das categorias do nosso diretório podem ser encontrados outros tipos de recursos relacionados com este artigo:
+ Entrar em Apache


Comentários dos visitantes
Os comentários dos visitantes são para ampliar a informação do artigo. Todos podem participar.
Acrescentar um comentário do artigo Acrescentar um comentário do artigo



Sobre nós | Copyright | Anuncie | Entrar em contato <criarweb>

Hospedado por Hostnet Hospedagem de Sites