Aprendendo URL`s amigáveis
Bom dia, boa noite e boa tarde pessoal, é com enorme prazer, que eu crio este tópico, com foco em quem quer aprender URL`s amigáveis.
Primeiramente, vamos falar sobre ER ou Expressões regulares, segundo a Wikipedia:
>
Em ciência da computação, uma expressão regular (ou o estrangeirismo regex, abreviação do inglês regular expression) provê uma forma concisa e flexível de identificar cadeias de caracteres de interesse, como caracteres particulares, palavras ou padrões de caracteres. Expressões regulares são escritas numa linguagem formal que pode ser interpretada por um processador de expressão regular, um programa que ou serve um gerador de analisador sintático ou examina o texto e identifica partes que casam com a especificação dada.
Elas servem, basicamente, para se fazer validações de dados, e são usadas para reescrever as famosas URL`s amigáveis, que nem todo mundo conhece.
Vamos partir do princípio! Uma expressão regular é essencialmente um padrão. É com base nesse padrão que a expressão em questão será avaliada. Primeiro vamos aprender a sintaxe das expressões para depois aprender como fazê-las funcionar…
A principio, os principais operadores, são este:
Operador ^
Pra resumir, este operador, significa início
Operador $
Pra resumir, este operador, significa fim
Operador [a-z]
Significa qualquer caractere minúsculo de a à z
Operador [A-Z]
Significa qualquer caractere maiúsculo de A à A
Operador [0-9]
Significa qualquer caractere numérico
Como, ER não são o foco do tutorial, partiremos logo para o PHP e Apache, quem quer conhecer melhor as Expressões Regulares, podem estar lendo o manual delas, que é este.
Primeiramente, você irá abrir o notepad do Windows(O meu é Windows), e salvá-lo na raiz do seu site dessa maneira ".htaccess", com aspas, depois abra-o em seu editor preferido, e acrescente o seguinte código ao seu arquivo:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME}% !-f
RewriteCond %{SCRIPT_FILENAME}% !-d
Vamos aprender linha por linha:
1 - Ativa o modo de reescrita do apache
2 - Diz que a regra não será aplicável para arquivos (f de Files)
3 - Diz que a regra não será aplicável para diretórios (d de Directories)
E agora, pensaremos como queremos que fiquem as nossas novas URL`s, vamos dizer, que eu tenho a seguinte URL
www.meusite.com.br/empresa.php
e que eu quero transformá-la em
www.meusite.com.br/empresa/
Em seu htacces, faria assim:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME}% !-f
RewriteCond %{SCRIPT_FILENAME}% !-d
RewriteRule ^empresa/?$ empresa.php
Vamos entender, primeira parte da regra, ^empresa/?$ empresa.php:
Deve inicar com empresa e no final, ter ou não uma barra
Vamos entender, a segunda parte da regra, ^empresa/?$ empresa.php:
Esta seria como a URL seria sem, o uso de URL`s amigas
Ok, acontece, que em todos os tutoriais na net, apresentam somente até aqui, e eu não, eu vou ensinar como criar as páginas PHP para as regras serem aplicadas, então não se desanime e continue a ler.
Pra início de conversa, você irá criar uma página em seu editor, com DOCTYPE, tudo certinho, nomeia como "empresa.php" e salve também na raiz do seu site. E no seu htaccess, ficará assim:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME}% !-f
RewriteCond %{SCRIPT_FILENAME}% !-d
RewriteRule ^empresa/?$ empresa.php
Agora abra seu navegador, e digite na barra de endereços: www.meusite.com.br/empresa/
Se tudo estiver funcionando, continue lendo, se não, volte e leia o tutorial novamente.
E depois que fizer isso, e quando precisar criar outra página, você só copia a página "empresa.php" e depois renomeia, e a regra, aplique da maneira que você aprendeu.
Legal, mas agora eu preciso passar parâmetros pelas páginas, como faço?
É simples, imagine que você tenha que passar o id de uma notícia via GET, daí você tem a página "noticias.php", que é para listar as notícias, e a página "noticia.php", que serve para ver a notícia em uma página single. Vamos supor que você teria que passar via url o id da notícia, e o slug, você faria uma listagem das notícias normalmente, e nos links aplicaria:
<a href="www.meusite.com.br/<?php echo $id."/".$slug;?>"><?php echo $titulo;?></a>
No seu htaccess, faria desse jeito:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME}% !-f
RewriteCond %{SCRIPT_FILENAME}% !-d
RewriteRule ^empresa/?$ empresa.php
RewriteRule ^noticias/?$ noticias.php
RewriteRule ^noticias/([0-9]+)/([a-zA-Z0-9]+)/?$ noticia.php?id=$1&slug=$2
Entendendo, RewriteRule ^noticias/([0-9]+)/([a-zA-Z0-9]+)/?$ noticia.php?id=$1&slug=$2:
^noticias/([0-9]+)/([a-zA-Z0-9]+)/?$
Amarelo: Como a url deve começar
Vermelho: Expressão regular para aceitar somente dados numéricos, 1,2,3,4,5 etc
Laranja: Expressão regular para aceitar qualquer coisa, 1wan,45wan,wanderson, etc
E no seu notícia.php, para receber os dados, faria normalmente com os nomes definidos em seu arquivo htaccess
$id = (int)$_GET['id'];
$slug = $_GET['slug'];
// Faria uma consulta ao banco de dados
É isso pessoal, caso você tem alguma dúvida, sugestão ou alguma coisa para dizer, o tópico está aberto, boa noite para você.
Discussão (32)
Carregando comentários...