Utilizando "URL Amigável" no Apache

Publicado por Denis Akao em 23/10/2008

[ Hits: 36.687 ]

 


Utilizando "URL Amigável" no Apache



Uma das coisas muito legais que dá para fazer com Apache é reescrever as URLs de seu site. Por exemplo:

http://meusite.com.br/titulo-da-pagina

Ao invés de:

http://meusite.com.br/?id=32&cat=5

É muito mais fácil para as pessoas guardarem as URLs e também é uma forma de melhorar a relevância de seu site nos buscadores (como o Google por exemplo).

Estou supondo que você já tem o apache instalado, caso não tenha abra o terminal e digite:

sudo apt-get install apache2 php5
$ sudo apt-get install libapache2-mod-auth-mysql php5-mysql
$ sudo apt-get install mysql-server-5.0 mysql-client


Ativando mod_rewrite no Apache

Crie um Link simbólico para o mods-enabled:

sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/

Abra com seu editor de texto preferido o seguinte arquivo:

sudo gedit /etc/apache2/sites-available/default

Localize a seguinte sintaxe:

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
   AllowOverride None
   Order allow,deny
   allow from all
</Directory>

Troque agora:

AllowOverride None

Por:

AllowOverride All

Pronto, está feito, você agora já pode reescrever suas URLs através de um .htaccess.

Exemplo de .htaccess

Você deve criar um arquivo .htaccess no diretório raiz de seu site. Exemplo de arquivo .htaccess:

RewriteEngine On

RewriteRule ^([A-Za-z0-9_\-]+)\.html$ ./?pg=$1&cat=conteudo

Fazendo isso eu estou substituindo:

http://localhost/?pg=qualquer_coisa&cat=conteudo

Por:

http://localhost/qualquer_coisa.html

Espero que tenha sido útil para vocês.

Abraços e até o próximo artigo.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Emails da Internet para Intranet com Thunderbird

Pssh - Compartilhando o shell de forma fácil

Restringindo conexão brute force com iptables

Instalando kernel 2.6.39 no Ubuntu 11.04

Instalação da placa Broadcom BCM4312 no Debian Squeeze

  

Comentários
[1] Comentário enviado por robersonfox em 24/10/2008 - 13:33h

Legal cara, não é de hoje que queria fazer isto, então fiz hoje, no entanto apareceu-me um erro, o erro 500 <b>Internal Server Error</b>.

No meu caso o parâmetro não se chama pg e sim p então somente mudei isto e removi o &cat=conteudo, no final das contas ficou assim:

RewriteEngine On
RewriteRule ^([A-Za-z0-9_\-]+)\.php$ ./?p=$1&cat=conteudo


para esta URL: http://localhost/?p=noticias

que pode ficar assim

http://localhost/index.php?p=noticias

tem alguma regra em mente?

[2] Comentário enviado por Denis Akao em 24/10/2008 - 13:52h

Carlos, essa regra que você definiu
^([A-Za-z0-9_\-]+)\.php$ ./?p=$1&cat=conteudo

está dizendo que para todas as paginas que forem "link.php" ela vai re-inderizar para o link "./?p=link&cat=conteudo"
entendeu?
imagine a seguinte situação, você tem um link "http://localhost/index.php?p=noticias" não seria melhor se esse link fosse "http://localhost/noticias/" ???
então você faria assim:
RewriteRule ^([A-Za-z0-9_\-]+)\/$ ./?p=$1&cat=conteudo

Ai no seu arquivo .php você chama a URL como "http://localhost/noticias/" mesmo!! o apache vai entender que você na verdade quer chamar a página "http://localhost/index.php?p=noticias" entendeu??
Qualquer coisa posta ai de novo que eu tento esclarecer melhor.
Abraços

[3] Comentário enviado por nukelinux em 27/08/2010 - 08:47h

no meu eu coloquei a regra de outra maneira:

RewriteRule ^noticias/(.*)/$ /noticias.php?id=$1 [N,L]

assim posso acessar como http://localhost/noticias/42/

e ele vai carregar a notícia de id 42

Próximo passo é enviar o título da notícia pela url, para ficar http://localhost/noticia/lancado-ubuntu-maverick/ (por exemplo)

Vou criar uma coluna no banco de dados só pra isso...rs



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts