09 de maio de 2017
Aprender a criar URLs amigáveis através da Reescrita de URL é algo fácil mas extremamente importante para qualquer programador.
Para isso vamos aprender três partes necessárias:
O .htaccess (o nome do arquivo é escrito desta maneira mesmo, com um ponto na frente) é um arquivo especial utilizado pelo Apache (servidor web) que verifica se há alguma restrição ou configuração especial para o diretório acessado. É com ele que iremos ativar a reescrita de URL e configurar outros parâmetros necessários.
Crie o arquivo .htaccess, insira o contúdo abaixo e salve o mesmo na pasta raiz do seu projeto (a mesma onde se encontra seu index.php).
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
A primeira linha habilita a reescrita.
A segunda e terceira linha dizem para o Apache ignorar a reescrita caso o endereço se referir a um arquivo ("f" de file) ou pasta ("d" de directory).
A quarta linha indica ao Apache qual a regra de reescrita será aplicada. Ela basicamente captura tudo o que vier depois de index.php e retorna como parâmetro para a página. Não vou me extender muito nos detalhes desta configuração, mas caso você queira saber mais a respeiro, indico ver a documentação do mod_rewrite do Apache.
Existêm algumas variações desta configuração, mas esta é a que uso.
OBS: Lembre-se também de habilitar o mod_rewrite do Apache e reiniciá-lo. Caso não saiba como fazer pesquise no Google de acordo com seu sistema operacional.
Queremos que nossas URLs sejam formadas com este padrão:
www.meu-site.com/pagina/parametro1/parametro2
Onde a página pode ser algo como "home", "produtos", "contato", etc. E onde poderemos ter nenhum, um, ou dois parâmetros (esta parte pode ser adaptada conforme sua necessidade).
Apenas para exemplificar melhor segue outro exemplo:
www.meu-site.com/produtos/eletronicos/pen-drive-32gb
Neste caso temos a página "produtos", a categoria "eletronicos" como 1º parâmetro e o item "pen-drive-32gb" como 2º parâmetro. Claro e direto!
No começo de seu index.php insira o seguinte trecho de código:
<?php $url = explode('/',$_GET['url']); $pagina = !empty($url[0]) ? $url[0] : 'home'; $parametro = !empty($url[1]) ? $url[1] : null; $parametro2 = !empty($url[2]) ? $url[2] : null; ?>
Neste trecho estamos fazendo o seguinte:
Na primeira linha verificamos se o parâmetro url existe. Fazemos isso checando se o mesmo foi passado via HTTP GET com o método isset($_GET['url']). O $_GET basicamente pega tudo o que foi passado como parâmetro na URL após o sinal de interrogaçao "?". Então se passarmos na URL "index.php?cor=branca", o retorno de $_GET['cor'] será "branca".
Confira novamente a última linha do .htaccess, nela você verá que criamos o parâmetro url depois do index.php que irá receber nossos parâmetros.
Caso afirmativo, separamos (explode) pelas barras (/) cada parâmetro e gravamos no array $url.
Agora pegamos cada item do array $url e transferimos para nossas variáveis correspondentes.
Caso não tenha nenhum parâmetro na página, retornamos o valor padrão "home", pois sempre será necessário termos uma página para ser carregada, já para os 2 parâmetros retornamos NULL caso não tenha sido passado nada.
Agora com todas informações em mãos, vamos para a etapa final que é carregar o contúdo.
Para isso vamos ter um HTML padrão que servirá como "corpo" de nossas páginas. Este arquivo será o próprio index.php e terá um cabeçalho e rodapé padrão, onde apenas o contúdo central da página será alterado.
Vamos criar um HTML básico aqui, mas você deve incrementá-lo conforme necessário:
<!DOCTYPE html> <html lang="pt-BR"> <head> <meta charset="UTF-8"> <title>Reescrita de URL</title> </head> <body> <div class="menu"> <!-- Insira seu menu aqui --> </div> <div class="conteudo"> <?php if (file_exists($pagina.'.php')) { include $pagina.'.php'; } else { include 'pagina-erro.php'; } ?> </div> <div class="rodape"> <!-- Insira seu rodapé aqui --> </div> </body> </html>
Veja que a mágica acontece dentro da div com a classe "conteudo".
Nela verificamos se o arquivo existe com base no parâmetro salvo na variável $pagina e caso exista, carregamos o mesmo, caso o arquivo não exista, carregamos um outro informando o erro (esse erro é o 404 - not found que normalmente vemos ao acessar uma página que não existe) e você pode personalizar o mesmo como queira.
Então no nosso exemplo anterior o sistema iria tentar carregar a página "produtos.php". E ainda teríamos acesso aos nossos 2 parâmetros, onde normalmente iríamos usá-los nas nossas consultas SQL para trazer apenas o contúdo desejado.
Pode parecer um pouco complicado à primeira vista, mas com a prática este processo se torna natural, facilitando em muito nosso desenvolvimento, organização e legibilidade do código.
Espero que tenham gostado e utilizem este valioso recurso em seus sites.
Grande abraço!
Visualizações: 11.968
23 de fevereiro de 2014
21 de agosto de 2013
15 de agosto de 2013