Manipulando URL com .htaccess
por BOZO

Esse artigo tenta mostrar uma maneira mais simples de criar um sistema de sub-diretórios muito usado em blogs e fotologs, evitando a criação de diretórios, usando apenas um .htaccess como redirecionador.






Criei um sistema de fotolog que gera um sub-diretório para cada usuário, (www.gambiarra.com.br/usuario) comecei criando um sistema que criava uma pasta para cada usuário e dentro dela uma index, que enviava para a página principal com o nome da pasta digitada, agora meu fotolog tem 10.001 usuários, meu servidor fez um backup e perdeu as permissões dos diretórios e estou tendo problemas em excluí-los quando fecho uma conta, já não bastava os problemas na hora de criar, além do que 10.001 pastas, 10.001 indices, e se precisar manipular todas essas pastas e seus arquivos por algum motivo?

Não gosto da idéia!


Existe alguma forma mais simples de se fazer isso?
Sim!

Como?
Com .htaccess!

o que é .htaccess?

O .htaccess é basicamente um arquivo, sem um nome, apenas com a extensão .htaccess, que manipula as propriedades do diretório atual e de seus sub-diretórios no Apache.

Vamos usar a propriedade Rewrite para reescrever a url deste diretório.

Primeiro ligamos o modo de reescrita de url, Rewrite.

RewriteEngine on

Logo depois setaremos as regras de reescrita da url com RewriteRule.

RewriteRule URL_VIRTUAL URL_FISICA

URL_VIRTUAL = Url digitada no navegador, que será reescrita de acordo com uma Expressão Regular

URL_FISICA = Url do redirecionamento

ex:


RewriteRule ^([a-z,0-9,A-Z,_-]+)$ /index.php?ID=$1


Neste caso a expressão seta os caracteres que serão aceitos na URL, no caso, caracteres de


"a" até "z", "0" até "9", 
"A" até "Z", além de "_" e "-", 


e agrupa os caracteres digitados na url que serão repassados à url fisíca através de "$1".

Neste caso, quando digitada a url virtual, www.gambairra.com.br/BOZO, por exemplo, vai reescreve-la como www.gambiarra.com.br/index.php?ID=BOZO

Com isso, teremos na página index.php a variável ID=BOZO, para manipular como quiser, com isso bastaria fazer uma consulta no DB pelo nome, e de acordo com isso montar a página do usuário, sem aquele monte de diretórios e arquivos.

Resumindo, para criar um sistema de sub-diretórios para fotolog, blog e afins, basta criar um .htaccess com o conteudo:


RewriteEngine on
RewriteRule ^([a-z,0-9,A-Z,_-]+)$ /index.php?ID=$1


e maniplular este ID, de acordo com suas necessidades.

Este foi meu primeiro artigo, e apesar de mal escrito, acredito que será bem útil.

Se conhece algum "CONTRA", por favor opine sobre.

Referencias:
http://httpd.apache.org/docs/1.3/howto/htaccess.html
http://apache.org/
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
http://pt.wikipedia.org/wiki/Express%C3%A3o_regular