Linux slogan
Visite também: BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Simples, bonito, facil de usar e leve
Por Sup0rt3
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Artigo

URL amigável com Perl
Linux user
mineirobr
15/10/2010
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.
Por: Lucas
[ Hits: 8280 ]
Conceito: 10.0   1 voto(s)1 voto(s)1 voto(s)1 voto(s)1 voto(s) + quero dar nota ao artigo

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

Leitura recomendada

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


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.