É um módulo escrito para o servidor Apache, responsável pela reescrita de URLs em páginas Web.
Hoje em dia, com a popularização de assuntos como SEO, usabilidade e acessibilidade, esta prática se tornou comum e está cada vez mais sendo utilizada por grande portais.
Antes de mais nada, para que o módulo mod_rewrite funcione, obviamente você deve ter configurado e ativado no seu servidor Apache.
Copilar o apache com a opção de mod_rewrite, acessar o diretorio:
- Código: Selecionar todos
cd /usr/ports/www/apache22
make config
# para selecionar opção abaixo
│[X] REWRITE Enable mod_rewrite
#copilar apache
make
#fazer instalação
make install
procurar pela linha, caso não existir add:
- Código: Selecionar todos
LoadModule rewrite_module libexec/apache/mod_rewrite.so
fazer as alterações em /usr/local/etc/apache22/httpd.conf
De:
- Código: Selecionar todos
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
Para:
- Código: Selecionar todos
<Directory />
Options All
AllowOverride All
</Directory>
feito isso restart o Apache
Para testar, vamos criar o .htaccess
Crie um arquivo com o nome ".htaccess" (exatamente desta forma), e mova para a pasta raiz do seu domínio (ou onde queira implantar a reescrita). Em seguida, insira o código abaixo:
- Código: Selecionar todos
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?cod=$1
Entendendo o código:
RewriteEngine On
Ativa o suporte à reescrita
RewriteCond %{SCRIPT_FILENAME} !-f
Não aplica a condição para arquivos
RewriteCond %{SCRIPT_FILENAME} !-d
Não aplica a condição para diretórios
RewriteRule ^(.*)$ index.php?cod=$1
Regra de reescrita onde qualquer string (.*) após a pasta, onde estiver o .htaccess, será interpretado por index.php passado na variável cod
- Código: Selecionar todos
Na prática, se você tem uma URL do tipo http://www.url.com.br/secao/subsecao/, será interpretada por http://www.url.com.br/index.php?cod=secao/subsecao/. E mais, você não terá limite de níveis para utilizar com as /.
Interpretando com PHP
Com seu arquivo de reescrita criado, você já pode criar uma lógica no seu arquivo PHP para que interprete e leia as URLs passadas.
Veja um exemplo auto-explicativo:
- Código: Selecionar todos
<?php
/*
* separa a URL por "/" e insere num vetor (array)
*/
$url = explode('/', $_GET['cod']);
/*
* imprime a string passada após a primeira /
* no exemplo acima, seria: secao
*/
echo $url[0];
/*
* imprime a string passada após a segunda /
* no exemplo acima, seria: subsecao
*/
echo $url[1];
?>
Desta forma, você pode utilizar includes para suas seções, ou qualquer outro tipo de inclusão, uma vez que você já tem suas seções separadas.