[Cascavel-pm] URL amigável em Perl

breno breno em rio.pm.org
Quinta Julho 9 08:04:44 PDT 2009


Fernando,

legal vc ter encontrado uma solução direta via mod_rewrite. Apenas
lembre-se que frameworks modernos em Perl já fazem o mapeamento
"amigável" de URLs automaticamente para vc sem a necessidade de
mod_rewrite, e oferecem muito mais poder e flexibilidade aos seus
programas web. Atenção especial para o Catalyst[1], Mojolicious[2] e
Titanium[3].

1. Catalyst é um poderoso framework MVC em Perl, e escolha principal
da comunidade hoje. As URLs são mapeadas para métodos (as "actions" )
dentro de controllers que vc cria, normalmente utilizando atributos
para definir seus caminhos. Por exemplo:

-------------8<------------
package MeuSite::Controller::Carro;
use parent 'Catalyst::Controller';

sub ferrari :Local {
           # o caminho http://meusite/carro/ferrari cairá aqui
}
1;
------------->8------------

Para mais informações, recomendo visitar
http://search.cpan.org/perldoc?Catalyst::Manual::Tutorial::02_CatalystBasics
ou, preferencialmente, seguir o Catalyst::Manual::Tutorial do início
mesmo.

http://www.catalystframework.org/


2. Mojolicious é um framework recente que tenta resolver os problemas
de desenvolvimento web de uma forma mais minimalista. Nele, vc define
o mapeamento URI -> action através de rotas. Para o mesmo exemplo,
poderia fazer algo como:

-------------8<------------
package MeuSite;
use base 'Mojolicious';

sub startup {
    my $self = shift;
    my $r = $self->routes;

    $r->route('/carro/(action)')
       ->to( controller => 'carro' );
}
------------->8------------

e em lib/MeuSite/Carro.pm ...

-------------8<------------
package MeuSite::Carro;
use base 'Mojolicious::Controller';

sub ferrari {
           # o caminho http://meusite/carro/ferrari cairá aqui
}
------------->8------------

Embora seja uma alternativa interessante, infelizmente o projeto ainda
está amadurecendo e ainda carece de documentação.

http://www.mojolicious.org/


3. Titanium é a nova roupagem do bom e velho CGI::Application, um
framework para resolver rápidamente problemas web, mas que não costuma
escalar tão bem quanto o Catalyst para aplicações de grande porte. Seu
mapeamento URI->action (que ele chama de "run mode") funciona na forma
"/meusite/modulo/run_mode":

-------------8<------------
package Carro;
use base 'Titanium';

sub setup {
   my $c = shift;
   $c->start_mode('index');
   $c->run_modes( [qw(ferrari)] );
}

sub ferrari {
           # o caminho http://meusite/carro/ferrari cairá aqui
}
------------->8------------

http://search.cpan.org/perldoc?Titanium


Vale lembrar que todos os frameworks acima já vem com programas
auxiliares que criam esqueletos de controllers, vistas e modelos para
você automaticamente, oferecem recursos de teste e servidores
stand-alone para desenvolvimento.

Naturalmente, esses foram só exemplos simples baseados na sua pergunta
inicial. Batendo novamente na tecla, lembre-se que frameworks web
trazem muito mais poder e flexibilidade a seus programas, e o
mapeamento de URIs amigáveis é só uma delas. Ah, existem outras também
como Jifty, Gantry, Maypole, mas essas eu deixo como um exercício para
o leitor ;-)

Escolha a que melhor atende suas necessidades e divirta-se. Qualquer
dúvida, a lista existe pra isso!

Espero ter ajudado.

[]s

-b

2009/7/9 Fernando <fernandolouis em terra.com.br>:
> Valeu pessoal, já achei um artigo que elucida tudo:
> http://www.plugmasters.com.br/sys/materias/401/1/Criando-urls-amig%E1veis-com-o-mod_rewrite-do-Apache
>
> Agora vou entrar em contato com o pessoal do servidor pra ver se posso ter
> acesso a isso e realizar as urls amigáveis.
>
> []s,
> Fernando
>
> ----- Original Message ----- From: "João Gabriel Casteluber Laass"
> <gabriel em joaogabriel.org>
> To: "Cascavel Perl Mongers" <cascavel-pm em pm.org>
> Sent: Wednesday, July 08, 2009 6:56 PM
> Subject: Re: [Cascavel-pm] URL amigável em Perl
>
>
> Na verdade o que você quer usa um módulo do Apache e não necessariamente o
> Perl.
>
> O primeiro passo é habilitar o módulo "mod_rewrite" dentro do
> "httpd.conf" do Apache. Depois, basta criar um arquivo ".htaccess" com
> as regras que você irá usar para chamar a aplicação Perl que irá
> captar as pastas e sub-pastas virtuais como parametro.
>
> De uma googlada por "mod_rewrite" que você acha isso fácil fácil ;)
>
> João Gabriel C. Laass
> 27 8802.0195
> www.joaogabriel.org
>
>
>
> 2009/7/8 Fernando <fernandolouis em terra.com.br>:
>>
>> Pessoal, é simples em Per criar url amigáveis?
>>
>> Hoje em dia aplicar SEO é essencial para o site se tornar relevante nos
>> buscadores.
>>
>> Minha dúvida é como transformar uma url
>> www.site.com.br/cgi-local/programa.pl?modelo=ferrari&transporte=carro em
>> www.site.com.br/transporte/carro-ferrari
>>
>> []s,
>> Fernando
>> _______________________________________________
>> Cascavel-pm mailing list
>> Cascavel-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/cascavel-pm
>>
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>


Mais detalhes sobre a lista de discussão Cascavel-pm