ct

    mod_rewrite


    O mod_rewrite tem a função de reescrever URLs a partir de um conjunto de parâmetros especificado por você. O uso mais simples para ele é quando você muda o domínio de acesso do site e quer que todos os links sejam redirecionados para o novo endereço.

    Imagine, por exemplo, que você migrou do http://dominio.provedor.com.br para http://www.dominio.com.br. Você poderia simplesmente criar um arquivo "index.php" no diretório raiz do antigo endereço com o seguinte conteúdo:

    <?php
    header("HTTP/1.1 301 Moved Permanently");
    header("location:
    http://www.dominio.com.br");
    exit;
    ?>

    Este é um modelo simples de redirecionamento, que faz com que o servidor passe a encaminhar os acessos para o endereço especificado, usando o código 301, que indica que a página mudou permanentemente de endereço.

    O problema é que fazendo isso o redirecionamento funcionaria apenas para os visitantes que acessassem a página principal do site. Um visitante que tentasse acessar o "http://dominio.provedor.com.br/produtos/index.php?id=312", por exemplo, receberia um erro 404.

    Usando o mod_rewrite, você poderia solucionar isso de forma muito simples. O primeiro passo é verificar se o módulo está carregado na configuração do Apache 2. No caso das distribuições derivadas do Debian, você pode ativá-lo usando o comando a2enmod:

    # a2enmod rewrite

    Muito provavelmente você receberá um "This module is already enabled!" como resposta, já que ele vem ativo por padrão na maioria das instalações. No caso do Fedora, CentOS e outras distribuições derivadas do Red Hat, verifique o arquivo "/etc/httpd/conf/httpd.conf" e, caso necessário, descomente as linhas:

    LoadModule rewrite_module modules/mod_rewrite.so
    AddModule mod_rewrite.c

    Depois de checar a ativação do módulo, falta apenas a configuração, que é feita através do arquivo ".htaccess", criado no diretório raiz do site antigo (ou seja, na pasta de arquivos do "http://dominio.provedor.com.br"). Embora o .htaccess seja geralmente associado com o uso de senhas, ele na verdade tem diversos outros usos, incluindo a configuração do mod_rewrite.

    Para que o mod_rewrite passe a encaminhar todas as requisições automaticamente, o conteúdo do arquivo ".htaccess" seria:

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule (.*) http://www.dominio.com.br/$1 [R=301,L]
    </IfModule>

    A linha "RewriteEngine On" é a responsável por encaminhar as requisições ao mod_rewrite, enquanto a linha "RewriteRule (.*) http://www.dominio.com.br/$1 [R=301,L]" explica o que deve ser feito.

    Apesar de parecer estranha à primeira vista, ela segue na verdade uma lógica bastante simples. O "(.*)" cria uma regra de encaminhamento, que será aplicada a qualquer URL dentro do domínio. A página especificada pelo visitante ao acessar o site vira uma variável ($1), que é então usada no parâmetro seguinte, o "http://www.dominio.com.br/$1" onde é indicado o novo domínio do site.

    Com isso, se o visitante tentar acessar o "http://dominio.provedor.com.br/produtos/index.php?id=312" do exemplo anterior, a variável "$1" será carregada com o valor "produtos/index.php?id=312" e ele será encaminhado ao "http://www.dominio.com.br/produtos/index.php?id=312". O mesmo se aplica a qualquer outra URL que ele vier a tentar acessar.

    Concluindo, o "[R=301,L]" é o código de retorno que será enviado ao cliente. No caso estamos usando o código 301, que é o código de redirecionamento permanente. Além de encaminhar os visitantes, ele faz com que o Google indexe a nova página e transfira o pagerank da página antiga para ela. Normalmente, a atualização do pagerank demora cerca de 3 meses, mas depois de feita a atualização o novo endereço deverá receber o mesmo pagerank do antigo.

    Outro uso comum para o mod_rewrite é a simplificação dos links, transformando URLs de páginas dinâmicas, como, por exemplo, "http://www.dominio.com.br/produtos/index.php?id=312" em URLs mais simples, como "http://www.dominio.com.br/produtos/312/" ou "http://www.dominio.com.br/312.htm"

    Nesse caso, criamos regras do rewrite que o orientam a detectar acessos à URL simplificada e encaminhar as requisições para a URL "real" de forma transparente, novamente através do uso de variáveis.

    Para converter as URLs do formato "http://www.dominio.com.br/index.php?id=numero" para "http://www.dominio.com.br/numero/", você usaria o seguinte modelo de arquivo .htaccess:

    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule (.*)/$ /index.php?id=$1
    </IfModule>

    Com isso, ao acessar o "http://www.dominio.com.br/512/", por exemplo, o visitante veria a página "http://www.dominio.com.br/index.php?id=512", o que mascara a complexidade da URL. Se você preferir que os links abreviados tenham a aparência de páginas com extensão .htm, em vez de pastas, o arquivo .htaccess ficaria:

    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule (.*)\.htm$ /index.php?id=$1
    </IfModule>

    A mesma regra pode ser aplicada também a pastas específicas. Se você quiser que ela se aplique apenas à pasta "produtos", sem ser aplicada a outras pastas do servidor, por exemplo, você poderia usar uma regra como:

    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule /produtos/(.*)\.htm$ /produtos/index.php?id=$1
    </IfModule>

    É possível também usar diversos parâmetros simultaneamente, facilitando o acesso a URLs que incluam um grande volume de argumentos, como em "http://www.dominio.com.br/index.php?cat=produtos&cat=info&id=23", desde que você consiga bolar um formato de URL que permita incluir todos os parâmetros necessários, como em:

    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule (.*)/(.*)/(.*)/$ /index.php?cat=$1&cat=$2&id=$3
    </IfModule>

    Com isso, os três parâmetros que precisam ser incluídos na URL são digitados pelo usuário na forma de uma sequência de subpastas, como em "http://www.dominio.com.br/produtos/info/23/" e o mod_rewrite converte automaticamente as URLs ao formato usado pelo servidor.

    À primeira vista, pode parecer uma mera mudança cosmética, mas o uso das URLs amigáveis facilita bastante a navegação do visitante e pode ajudar até mesmo na indexação por parte dos mecanismos de busca.



    » Próximo: mod_deflate





    Você está lendo um tópico de demonstração do livro Servidores, Guia Prático:

    Autor: Carlos E. Morimoto
    Páginas: 736
    Formato: 23 x 16 cm
    Editora: GDH Press e Sul Editores
    ISBN: 978-85-99593-13-4
    Lançado em: Agosto de 2008

    » R$ 76,00 + frete
    (Preço nas livrarias: R$ 96)

    » Compre o seu

    Descrição:

    O livro Redes e Servidores Linux - Guia Prático foi nosso primeiro best-seller, vendendo um total de 8.000 exemplares em suas duas edições. O processo de atualização do livro acabou dando origem a dois livros separados. O primeiro deles é o livro Redes - Guia Prático, que aborda detalhes sobre a implantação e configuração de redes, abordando detalhes sobre os padrões de rede, configuração no Windows e Linux, configuração de redes wireless e outros temas.

    O livro Servidores Linux, Guia Prático é o segundo livro da série, que complementa o primeiro, oferecendo uma visão aprofundada sobre a configuração de servidores Linux.

    No livro você aprenderá a configurar tanto servidores de rede local quanto servidores dedicados, incluindo a configuração do Squid, Samba, Apache, SSH, LTSP, Postfix, Iptables, Bind, Quota e outros serviços. O livro inclui também capítulos sobre virtualização e sobre hardware para servidores, que complementam as informações abordadas nos demais.



     


cb
HOME