htaccess

Url Amigável com .htaccess

Olá pessoal irei mostrar como utlizar o .htaccess para criar url’s amigáveis para seu site.

O que é url Amigável ?
As url’s amigáveis são aqueles que podem ser lidas fácilmente por um pessoa e principalmente pelos mecanismo de busca, um exemplo a url desse post é ” http://www.ricardo.com/url-amigavel-com-htaccess” isso é uma url amigável, ao invés desse tipo de url “http://www.ricardok.com/?post=387″, isso é legível apenas para o sistema aonde essa url aponta, pois para as pessoas e os mecanismo de busca não.

Como fazer as url’s amigáveis?

Passo 1 – Você precisa habilitar no seu apache o mod_rewrite.
Procure o arquivo httpd.conf (geralmente ele se encontra dentro da pasta conf ou config).
Abra o arquivo como edição e procure pela linha

[code]#LoadModule rewrite_module modules/mod_rewrite.so[/code]

Descomente removendo o # do começo da linha, ficando assim

[code]LoadModule rewrite_module modules/mod_rewrite.so[/code]

Agora procure a linha

[code]AllowOverride None[/code]

E altera para ficar assim

[code]AllowOverride All[/code]

Com isso Habilitamos o servidor apache a interpretar o mod_rewrite.
para maiores informações mod_rewrite apache

Passo 2 Criar o arquivo .htaccess
Crie um arquivo novo em qualquer editor e salve dessa forma “.htaccess” (sem as aspas) abra o arquivo e edite ele com o código abaixo:

[code]Options +FollowSymlinks
#Habilita oo mod_rewrite no arquivo
RewriteEngine On
#diz que o diretorio base é /
RewriteBase /
#verifica se existe um arquivo com o nome do parametro vindo após a /
RewriteCond %{REQUEST_FILENAME} !-f
#verifica se existe uma pasta com o nome do parametro vindo após a /
RewriteCond %{REQUEST_FILENAME} !-d
#Direciona a url para a página index.php
RewriteRule .(/)?$ index.php[/code]

Estamos quase lá. Agora falta apenas tratar os parametros no php

Passo3 – Tratando os parametros no PHP
no arquivo index.php você trata os parametros vindos da url assim:

[php]#Essa parte pegamos a varaivel do servidor "REQUEST_URI" e tratamos ela para pegar os parametros vindo após a "/"
$params = explode("/",str_replace(strrchr($_SERVER["REQUEST_URI"], "?"), "", $_SERVER["REQUEST_URI"]));

#A variavel params armazena agora um array de conteudo com todos os parametros que foi digitado na url

#Nessa parte nos eliminamos o primeiro elemento da variavel $params pois é um elemento vazio.
array_shift($params);[/php]

Assim temos um array com os parametros vindos da url e podemos trabalhar da forma que for melhor para cada um. Exemplo:
Acessando a url “http://www.teste.com/pagina/institucional”
a variavel $params ficaria assim

[php]
Array(
[0] -> "pagina",
[1] -> "institucional"
)[/php]

Sendo assim poderia pegar a primeira variavel para ser o arquivo a ser acessado e a segunda variavel a ação que o arquivo executaria.
Utilizando esse método você consegue pegar N variáveis vinda da url, a cada “/” é uma variável, apenas teria que ser tratada na página o cada variável é.

Para utilizar essa mesma regra em servidores IIS você tem que utilizar em vez do arquivo .htaccess o arquivo web.config e dentro dele utilizar a seguinte regra.

[code lang="xml"]<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Imported Rule 1">
<match url=".(/)?$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
[/code]

Isso ae pessoal, espero ter ajudado :)

5 comentários sobre “Url Amigável com .htaccess

  1. Fico na dúvida: como usar

    if($_GET['param']==”parametro1″)
    {
    echo “Acessou o parametro 1″;
    }
    else
    if($_GET['param']==”parametro2″)
    {
    echo “Acessou o parametro 1″;
    }

    e também no $_POST
    ???

  2. Olá @triploX,

    você vai acessar os parametros get através da váriavel $params, a url seguinte http://www.dominio.com/parametro1/parametro2, você teria acesso aos parametros da seguinte maneira,
    echo $params[0]; // esse é o parametro1 da url
    echo $params[1]; // esse é o parametro2 da url

    via post você recebe normal sem problemas com os name do formulário $_POST["name_do_formulario"].

    qualquer dúvida que tenha ficado entre em contato :)

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>