URL amigável com Perl

Procurando na internet um artigo sobre URL amigável com Perl não encontrei, pensei em fazer um e estou aqui. Alguns experientes da linguagem Perl fazem isso brincando, logo esse artigo é voltado para os iniciantes.

[ Hits: 9.126 ]

Por: Lucas em 15/10/2010


Introdução

URL amigável é um ótimo recurso, ajuda facilitar a visualização do usuário final, deixa a URL mais fácil de entender, de decorar e muito mais bonita.

É comum você ver URL assim:

http://www.seusite.com.br/index.pl?search=casa&data=29-09-2010&pagina=234

Que agora com esse artigo vai ficar assim:

http://www.seusite.com.br/casa/29-09-2010/234

Configurando o arquivo .htaccess

Primeiro vamos criar um arquivo .htaccess no diretório raiz do seu site.

Coloque o seguinte conteúdo no arquivo .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.pl?dados=$1 [L,QSA]
</IfModule>

A linha "RewriteEngine On" habilita o módulo mod_rewrite do Apache.

A linha "RewriteCond %{REQUEST_FILENAME} !-f" verifica se a URL digitada é um arquivo existente no site.

A linha "RewriteCond %{REQUEST_FILENAME} !-d" verifica se a URL digitada é uma pasta existente no site.

A linha "RewriteRule ^(.*)$ index.pl?dados=$1 [L,QSA]" define a URL com a GET dados.

Criando o arquivo index.pl

Agora vem a parte mais importante da URL amigável.

Crie o arquivo index.pl no diretório raiz do seu site.

Coloque esse código no arquivo index.pl:

#!/usr/bin/perl

use strict;
use warnings;
use CGI qw(:standard);

my $dados = url_param('dados');
my @url = split(/\//, $dados);

if($url[0] ne '') {
   if( -e $url[0] . '.pl'){
      require $url[0] . '.pl';
   } else{
      require '404.pl';
   }
} else {
   require 'home.pl';
}

A linha "my $dados = url_param('dados');" captura a GET dados e passa para variável $dados.

A linha "my @url = split(/\//, $dados);" tem a função split do Perl, que usa expressões regulares para separar palavras ou frases e depois adiciona no array @url.

As outras linhas usam condições de comparação para testar a GET, verificar a existência do arquivo, se o arquivo não existir chama o arquivo de erro que é o "404.pl".

Você deve ter percebido que não coloquei o comando "print "Content-type: text/html\n\n";" para o funcionamento do HTTP, mas ele deve ser incluído em todos os outros arquivos.

Agora explicando como vai funcionar o script.

Exemplos:

Se você criar o arquivo "contato.pl", irá acessar ele assim:

http://www.seusite.com.br/contato

Se você criar o arquivo "empresa.pl" irá acessar ele assim:

http://www.seusite.com.br/empresa

Crie o arquivo "home.pl", ele será o index do seu site, porque quando alguém acessar seu site é esse arquivo que será chamado. Você poderá acessar ele de duas formas:

http://www.seusite.com.br
e
http://www.seusite.com.br/home

    Próxima página

Páginas do artigo
   1. Introdução
   2. Explicação final
Outros artigos deste autor

Catalyst Framework Perl - Parte III

Catalyst Framework Perl - (parte 2)

Catalyst Framework Perl (parte 1)

Leitura recomendada

Catalyst Framework Perl - Parte III

Programando uma Intranet com Apache, MySQL e Perl (parte 1)

Catalyst Framework Perl (parte 1)

Phperl, minha gambiarra para usar Perl como se fosse PHP

Introdução a CGI com a RFC 3875

Comentários
[1] Comentário enviado por lucasrca em 20/10/2010 - 13:07h

Excelente. Obrigado.

[2] Comentário enviado por mtarroyo em 09/11/2010 - 23:59h

Muito bom, direto ao assunto. Mais sobre o Apache httpd mod_rewrite: http://httpd.apache.org/docs/current/mod/mod_rewrite.html


Contribuir com comentário