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