+4

Manipulando URL com .htaccess

criado por BOZO em 18/07/2006 3:17pm
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 <a 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

Comentários:

Mostrando 1 - 10 de 32 comentários
Klawdyo disse:
Não dá certo aqui.
Existe alguma configuração pro Apache?
20/10/2007 9:21pm (~17 anos atrás)

Celso Endo disse:
alguém sabe me dizer a performance do mod_rewrite se tiver mais de 10000 (10 mil) regras num mesmo .htaccess?? todas as regras são simples e só muda uma string entre elas... alguém tem idéia?
20/09/2007 2:36pm (~17 anos atrás)

Felipe Sander disse:
testei em 2 provedores diferentes aquela regrinha de tirar a extensão do index.php e não tem jeito de funcionar.

no primeiro só dá "The requested URL /index was not found on this server."

e no segundo provedor dá um bem grande "Internal Server Error".

Desisto.
15/01/2007 5:14am (~18 anos atrás)

Marcelo Veras disse:
Atenção Programadores PHP / MySQL

Tenho uma consultoria que atende empresas em toda a América Latina, tenho como principais clientes a Alcatel e a Ford. Uma das principais ferramentas de minha empresa é baseada em PHP/MySQL (http://www.workforcesys.com) e minha empresa precisa a cada venda de um profissional para customizá-la. Enviem seus CV's para:
marcelo.veras@workforcesys.com

Não importa o estado onde vc more (temos projetos no Brasil todo e para fora do Brasil inclusive)

É importante possuir alguma experiência em implementação de sistemas de gestão e habilidade para aplicar treinamentos aos usuários. Desejável disponibilidade para viagens.
24/11/2006 10:51am (~18 anos atrás)

Não sabia q poderia usar quebras de linhas

.
.
.
.
.
Ótimo!!
21/11/2006 2:42am (~18 anos atrás)

Oi! gostei muito deste artigo, bem interessante mais tive algumas dificuldades pelo fato de está usando o apache no windows. Alguém sabe se é possivel usar o .htaccess de alguma forma no windows, so pra reforçar não se consegue criar arquivo sem nome nos sistemas Windows! acho q deve ter outra forma ja vasculhei no Google mais não conseguir achar algo que explicasse claramente.
21/11/2006 2:39am (~18 anos atrás)

Fábio disse:
QUAL O PORQUE DO ERRO ABAIXO?

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@dominio.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Apache/1.3.33 Server at localhost Port 80
01/10/2006 2:37pm (~18 anos atrás)

Bom Artigo!!!
Mas queria saber se é possível usar esse método em um servidor local, Apache?

No servidor na web funcionou normalmente!!!
01/09/2006 11:55am (~18 anos atrás)

Alan disse:
Isso funciona caso eu tenha vários diretórios com seus respectivos index?
13/08/2006 10:37am (~18 anos atrás)

Rafael Dohms disse:
Também escrevi um artigo sobre o mod_rewrite.
Cabe resaltar que ele não é padrão do Apache, deve ser adicionado na compilação.

http://www.rafaeldohms.com.br/2006/07/25/mod_rewrite_url_amigavel/pt/
09/08/2006 7:01am (~18 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)