Introdução
URL amigavel é um otimo recurso, ajuda facilitar a visualização do usuario final, deixa a URL mais facil 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
O primeiro vamos criar um arquivo .htaccess no diretório raiz do seu site.
Coloque esse comando 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 modulo 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 é a parte mais importante da URL amigavel.
Crie o arquivo index.pl no diretorio raiz do seu site.
Coloque esse codigo 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');" capitura a GET dados e passa para variavel $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 usa condições de comparação para testar a GET, verificar a existencia do arquivo, se o arquivo não existir chama o arquivo de erro que é "404.pl".
Você deve ter percebido que eu não coloquei o comando "print "Content-type: text/html\n\n";" para o funcionamento do HTTP, mas ele deve ser incluido em todos os outros arquivos.
Agora explicando como vai funcionar o script.
exemplos:
Se você criar o arquivo "contato.pl".
Você ira acessar ele assim: http://www.seusite.com.br/contato
Se você criar o arquivo "empresa.pl".
Você ira acessar ele assim: http://www.seusite.com.br/empresa
Crie o arquivo "home.pl", ele vai ser o index do seu site. Porque quando alguem acessar seu site é esse arquivo que vai ser chamado. Você podera acessar ele de duas forma:
http://www.seusite.com.br
e
http://www.seusite.com.br/home
Explicação final
Nas outras paginas você não precisa chamar o Perl com o comando "#!/usr/bin/perl" porque ja esta sendo chamado no arquivo "index.pl"
Nas outras paginas voce vai incluir os modulos que deseja usar em tal pagina, o camando "print "Content-type: text/html\n\n";" para o funcionamento do HTTP.
Agora a explicação para pegar as outras GETs
Exemplo:
http://www.seusite.com.br/home/Lucas/Tiago/Moraes
esse codigos abaixo você deve usar em todas as paginas que for pegar as outras GETs:
use strict;
use warnings;
use CGI qw(:standard);
print "Content-type: text/html\n\n";
my $dados = url_param('dados');
my @url = split(/\//, $dados);
// para imprimir "Lucas"
print $url['1'];
// para imprimir "Tiago"
print $url['2'];
// para imprimir "Moraes"
print $url['3'];
Obs: quando usar GETs na pagina principal, nunca deixe de colocar o /home/, porque senão vai gerar erro:
exemplo:
http://www.seusite.com.br/Lucas/Tiago/Moraes
O arquivo "index.pl" vai achar que Lucas é um arquivo.
Pronto é isso!
Espero ter ajudado a todos!
Qualquer duvida o erro, é so comentar.
Desculpa algum erro de português.
Deus é o limite!
Links:
http://sao-paulo.pm.org/
http://rio.pm.org/
http://brasil.pm.org/
http://www.perl.org/
http://www.cpan.org/