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.776 ]

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 1)

Executando os principais frameworks Perl no cPanel com CGI

Catalyst Framework Perl - (parte 2)

Catalyst Framework Perl - Parte III

Leitura recomendada

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

Executando os principais frameworks Perl no cPanel com CGI

Phperl, minha gambiarra para usar Perl como se fosse PHP

Catalyst Framework Perl (parte 1)

Twittando com o Perl (parte 1)

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