htacess para mod_rewrite em apache

Estrutura de URLs “amigáveis”, que ajudem utilizadores a mais facilmente identificarem a localização no site e para dar uma ajuda extra com a relevancia nos motores de busca.

A ideia aqui é passar de um url assim: www.exemplo.com/script/niv1.php?n1=12358 ou www.exemplo.com/script/niv1.php?n1=12358&n2=456&n3=555

para: www.exemplo.com/a-minha-pagina/ ou www.exemplo.com/a-minha-pagina/sub-pagina/detalhe-pagina/

Este exemplo funciona em servidor apache no qual o modulo rewrite esteja activo.

Criar um ficheiro .htacess no root do site com o seguinte conteudo

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.exemplo.com\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
rewriteBase /
RewriteRule ^([^/\.]+)/?$ /script/niv1.php?n1=$1 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ /script/niv2.php?n1=$1&n2=$2 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ /script/niv3.php?n1=$1&n2=$2&n3=$3 [L]

Explicação:

Linha 1: ligar o rewrite

Linhas 2 e 3: se o pedido for efectuado para exemplo.com é acrescentado o www no inicio.

Linhas 3 e 4: se o pedido não terminar com ‘/’ acrescentar a barra (/) no final ex: www.exemplo.com/pagina é transformado em www.exemplo.com/pagina/

Linhas seguintes: se apenas um parametro é passado executar o ficheiro /script/niv1.php,  se dois parametros /script/niv2.php e claro se tres parametros /script/niv3.php. o que irá acontecer é que ao chamar www.exemplo.com/pagina/ irá ser o mesmo que www.exemplo.com/script/niv1.php?n1=pagina

Importante:

Ao aplicar este htacess no root do site o erro 404 desaparece.

Isto poderá ser causa para problemas com os motores de busca.

Assim sugiro que antes de passar os headers para o browser verifique se a página existe caso contrário passar o header 404 e apresentar página de erro.

Em php pode declarar o header 404 assim: header(“HTTP/1.0 404 Not Found”);

Este processo É IMPORTANTE e sugiro verificar os headers

Finalmente:

Caso deseje que uma pasta e suas sub pastas não sejam afectadas por esta função pode criar um outro ficheiro .htacess na pasta que pretende não afectada e simplesmente colocar dentro deste:

RewriteEngine Off

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.