out
30
Tenho observado que vários desenvolvedores PHP, se perguntam: "Como faço para que meu site utilize endereços (URL) amigaveis?"Mas afinal, se não se questionou deste jeito, com certeza já pensou em transformar a URL de seus projetos php de forma que não mostre valores e variáveis.
Um bom exemplo:
- Antes: www.endereco.com/?pagina=noticias&idnoticia=4
- Depois: www.endereco.com/noticias/4/como-fazer-isso
Então eles decidiram por adotar uma configuração modularizada, onde os parâmetros gerais do servidor ficam em "apache2.conf" e as configurações válidas para os sites virtuais ficam em arquivos de configuração sob a pasta /etc/apache2/sites-available/ e é la onde você deverá definir o parâmetro AllowOverride com o valor All conforme veremos logo abaixo.
O arquivo httpd.conf continua existindo por questões de retro-compatibilidade, ele é fornecido vazio, mas, se vc colocar alguma diretiva nele o sistema continuará respeitando-a...
Voltando a falar sobre a configuração necessária para utilização de URLs amigáveis, algumas configurações são necessárias no httpd.conf.
Abra o arquivo httpd.conf e descomente a seguinte linha (remover a tralha no ínicio da linha):
#LoadModule rewrite_module modules/mod_rewrite.so
Caso utilize Debian siga os passos:
Se fosse realizar os passos manualmente, seriam necessários alterações e criações de novos arquivos. Para resolver este problema e cortar um bom caminho, existe um comando facilitador que habilita um módulo no apache. Execute o comando: a2enmod rewrite. Ele cria um arquivo na pasta /etc/apache2/mods-enabled chamado rewrite.load no qual contem a linha LoadModule citada acima.
O proximo passo é alterar as seguintes linhas do http.conf:
#
# Options Indexes FollowSymLinks
# AllowOverride None
#
por:
Options FollowSymLinks Includes
AllowOverride All
Caso utilize Debian, essas linhas não estarão presentes no arquivo apache2.conf. As premissões de diretórios e sites virtuais, como dito anteriormente, se localiza em /etc/apache2/sites-available/. Acesse esta pasta e edite o arquivo default, caso não tenha um site configurado nesta pasta, este é o arquivo de configuração padrão para todos os sites. Altere todos os parâmetros AllowOverride deste aquivo, para o valor All.
A permissão para utilizar .htaccess em pastas para alterar as permissões de acesso, já está realizada. Vamos então criar um arquivo chamado .htaccess na pasta em que desejamos tal efeito com o seguinte conteúdo:
RewriteEngine on
RewriteRule !\.(js|ico|txt|gif|jpg|png|css|swf)$ pagina.php
Este comando habilita o Módulo Rewrite e cria uma regra que redireciona para o quivo pagina.php quando o arquivo for diferente das extensões citadas: .js, .ico, .txt, .gif, .jpg, .png, .css, .swf. Se este arquivo estiver dentro da pasta "teste" (http://localhost/teste), por exemplo, qualquer endereço que aponte para dentro desta pasta será redirecionado para o arquivo PAGINA.PHP conforme configuração do .htaccess. Por exemplo: http://localhost/teste/noticia/31/teste-de-noticia.
Como fazer agora para capturar os parâmetros passados no arquivo pagina.php?
Usando a função explode para quebrar a variável do servidor que aponta para o endereço digitado ($_SERVER["REQUEST_URI"]) da seguinte maneira:
$get = explode("/", $_SERVER["REQUEST_URI"]);
todos os valores estão agora no vetor $get, basta utilizálos.
Se este arquivo .htaccess estiver dentro da pasta "teste" por exemplo (http://,