Seções iMasters
Web Standards

URL Rewriting: Criando URLs competitivas!

Neste artigo vamos entender mais sobre a tecnologia conhecida como URL Rewriting ou Rewrite engine, que, segunda a literatura, é uma técnica que permite a re-escrita de URLs, ou seja, possibilita que uma determinada URL original seja mascarada ou substituída por outra mais segura, apresentável e acessível para nós humanos e para os motores de buscas (Google, Yahoo, Msn e etc).

Nas próximas linhas será apresentado o que é realmente esta técnica, quais seus benefícios, como utilizar e configurar, uma demonstração de um exemplo prático e por fim algumas conclusões e referências.

O que é? E quais os benefícios?

Como dito anteriormente, os termos URL Rewriting ou Rewrite engine representam uma forma de mascarar uma determinada URL, tornado-a acessível de diferentes formas. Mas não é somente isso, se esta técnica for aplicada de uma forma correta, trará ótimos benefícios, que serão descritos nas próximas seções.

Na prática a responsabilidade deste mascaramento é do servidor web. O pioneiro desta técnica é o servidor web Apache, que implementa nativamente o módulo Mod_Rewrite, responsável por este processo.

Antes de falar sobre Mod_Rewrite, para aqueles que estão perdidos, será mostrado logo abaixo um exemplo real deste técnica.

http://www.meusite.com/not.php?cat=9

Na linha acima foi mostrado uma URL que é normalmente encontrada na internet, que utiliza determinados parâmetros para filtrar, dentre uma base de dados, as informações que condizem com os parâmetros enviados. Para entender melhor, a página not.php irá mostrar uma lista de notícias ligadas ao parâmetro cat, que representa uma determinada categoria.

http://www.meusite.com/noticias/9/php-avancado.html

Através de outra URL bem diferente, é possível executar o mesmo processo que irá resultar nas mesmas informações. Mas nota-se um diferencial, que se utilizado de forma certa, pode-se adicionar nível de competitividade a URL. Isso mesmo, competitividade, se você se preocupa em tornar seu site mais conhecido, é importante aliar-se aos motores de buscas, por que eles trabalham dia e noite, e sem medir esforços, levam o seu site ao conhecimento de milhares de usuários. Mas para aparecer nas primeiras linhas, é necessário ficar atento a algumas questões, dentre elas você pode começar através da URL Rewriting.

São três pontos importantes que podem ser levados em conta ao se tratar dos benefícios do URL Rewriting:

  • Facilita a indexação de informações por motores de buscas;
  • Torna a URL mais agradável e de fácil compreensão por nós humanos;
  • E Segurança, evitando problemas como SQL Injection.

Lembrando que os motores de buscas consideram com certo nível de importância em palavras chaves localizadas em URLs, desta forma, por que não utilizar desta vantagem. Voltando a segunda URL de exemplo, pode-se ver que foram adicionadas as palavras noticias e php-avancado. Nitidamente percebe-se que a segunda URL terá mais chances (considerando apenas a URL e não o conteúdo da página) de aparecer nos resultados do que a primeira URL, caso seja executado uma consulta que possua tais palavras. Devido a isso que existe a importância em se estruturar uma URL, se importando com pequenos detalhes, que em um todo, trará ótimos resultados.

Outro ponto que pode ser explorado está relacionado em tornar a URL mais agradável ou amigável (como outros articulistas descrevem) para nós humanos, permitindo assim uma maior compreensão. Algumas pessoas tentam se localizar dentro do site através da URL, desta forma fica bem mais fácil saber onde ela está localizada, se adotada a segunda URL de exemplo, em que está nítido na URL que a página trata de notícias sobre php avançado. Também deve ser considerada a memória, por que fica mais fácil decorar palavras do que códigos, principalmente quando o usuário não sabe para que servem.

Em relação à segurança a URL Rewriting pode evitar alguns problemas que ocorrem, como por exemplo, o SQL Injection. O módulo Mod_Rewrite do Apache utiliza Expressões Regulares para identificar qual URL está sendo executada e filtrar os dados necessários para a chamada da URL original. Desta forma, através destas expressões é possível invalidar informações indevidas passadas pela URL, que podem abrir brechas para a execução de códigos indevidos. Este assunto será citado novamente na seção que mostrará exemplos práticos sobre URL Rewriting.

Primeiros passos na prática

Vimos até o momento uma introdução sobre URL Rewriting, juntamente com suas vantagens e motivações, que viabilizam a sua utilização. Mas agora iremos partir para a prática, será mostrado como habilitar o módulo Mod_Rewrite do Apache e como iniciar a sua utilização.

Para iniciar o funcionamento do Mod_Rewrite será necessário executar dois passos, primeiro alterar o arquivo de configuração do Apache (httpd.conf) e o segundo criar o arquivo .htaccess que conterá as instruções para a re-escrita.

Alterando o arquivo de configuração

No arquivo httpd.conf, localize as seguintes linhas:

LoadModule rewrite_module modules/mod_rewrite.so
AddModule mod_rewrite.c

Retire o comentário () das duas linhas, que resultará em:

LoadModule rewrite_module modules/mod_rewrite.so
AddModule mod_rewrite.c
Localize novamente as seguintes linhas:

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

Substitua a palavra Nome por All, que resultará em:

<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>

Feitas as alterações, reinicie o Apache.

Criando e manipulando o .htaccess

Crie um arquivo chamado .htaccess e salve-o. Após concluir a edição, copie-o para o diretório raiz do servidor

(ex: /public_html).

Inicie o arquivo com a seguinte instrução:

RewriteEngine On

Este comando habilita o módulo Mod_Rewrite. Lembrando que este arquivo não é utilizado apenas para esta finalidade, por isso a necessidade de iniciar o processo de re-escrita.

As instruções seguintes serão programadas para solucionar um problema simples como exemplo inicial, em que para todas as URLs executadas com extensão .html serão re-escritas para suas respectivas páginas em php.

RewriteRule (.)\.html 1.php

A instrução é composta basicamente por três expressões separadas por espaço:

01.

RewriteRule

É a expressão que inicia uma linha de instrução.

02.

^(.)+\.html$

É a expressão regular que identifica a página que deverá ser filtrada. Neste momento é muito importante ter conhecimentos sobre expressões regulares, desta forma, é preciso que você consulte outras fontes sobre assunto.

03.

$1.php

Está é a URL original que será executada. Veja que existe a seguinte expressão 1, esta representa o primeiro parâmetro filtrado pela expressão regular. Os parâmetros são definidos pelos conteúdos que atendem a expressão entre (), caso exista mais de um par de (), os próximos parâmetros serão representados como 2, 3, 4…

Desta forma, se for executada uma URL chamada teste.html será re-escrita e executada como teste.php.

Exemplo Prático

Bem, para reforçarmos o assunto e ver na prática o seu funcionamento, será mostrado um exemplo simples de um sistema de notícias. Será abordado apenas as partes que irão auxiliar na exemplificação do problema.

Para tanto iremos criar quatro arquivos: UrlManage.class.php; Noticias.php; Noticia.php; e .htaccess. Faça o download dos arquivos.

Primeiro iniciaremos pela classe UrlManage, que será utilizada para manipular todas as URLs.

<?
class UrlManage {
	public static function getUrlNoticia($IdNoticia, $Categoria, $Titulo){
		if( UrlManage::HabilitadoModRewrite() ){
			return "noticia/$IdNoticia/".UrlManage::convertStringByUrlString($Categoria)."/".
					UrlManage::convertStringByUrlString($Titulo).".html";
		}else{
			return "noticia.php?id=$IdNoticia";
		}
	}
	private static function convertStringByUrlString($String){...}		
	private static function HabilitadoModRewrite(){
		return true;
	}
}
?>

Na imagem (UrlManage.class.php) acima método principal é o getUrlNoticia(…), que retorna o link já formatado. Antes de retornar a string da URL é verificado, através do método HabilitadoModRewrite(), se a opção de re-escrita está habilitada ou não.

Este método tem a função de tornar fácil e sem maiores transtornos a possibilidade de adotar ou não a re-escrita de URL’s, alterando simplesmente o valor booleano que é retornado.

O método convertStringByUrlString(…) é utilizado para limpar (remover espaços, caracteres especiais e etc) uma determinada string e torná-la apita para ser utilizada como URL.

A utilização da classe UrlManage é simples. Veja na figura (Noticias.php) abaixo.

<?
	include("UrlManage.class.php");
	
	//Essas informações normalmente virão de uma base de dados
	$Noticias[0]["IdNoticia"] = 1;
	$Noticias[0]["Categoria"] = "Categoria 01";
	$Noticias[0]["Titulo"] = "Título da Notícia 01";
	$Noticias[1]["IdNoticia"] = 2;
	$Noticias[1]["Categoria"] = "Categoria 02";
	$Noticias[1]["Titulo"] = "Título da Notícia 02";
	
	//Criando uma lista com os links das notícias
	print("<ul>");
	foreach ($Noticias as $Noticia){
		$link = UrlManage::getUrlNoticia($Noticia["IdNoticia"], $Noticia["Categoria"], $Noticia["Titulo"]);
		print("<li><a href="".$link."">".$Noticia["Titulo"]."</a></li>");
	}
	print("</ul>");
?>

Neste codigo é possível visualizar uma aplicação simples da classe UrlManage, que através de uma base de informações é criado uma lista de dados, contendo o título e o link para a respectiva notícia.

O resultado da execução do arquivo Noticias.php resultará nas seguintes informações, demonstradas na figura abaixo.

<!-- Resultado após compilação -->
<ul>
	<li><a href='noticia/1/categoria-01/titulo-da-noticia-01.html'>Título da Notícia 01</a></li>
	<li><a href='noticia/2/categoria-02/titulo-da-noticia-02.html'>Título da Notícia 02</a></li>
</ul>

Veja que os resultados dos links estão estruturados para a utilização da re-escrita. O interessante é que em nenhum momento fica explicito qual a linguagem utilizada pelo site, nem como está definida a estrutura de diretório (original) e organização de arquivos do site, que por segurança torna-se uma vantagem. Agora basta codificarmos o .htaccess para interpretar a estrutura de URL definida.

Neste momento o importante é saber quais informações serão necessárias para a visualização da notícia. Pela estrutura que foi utilizada, para cada notícia existe um identificador, chamado de IdNoticia, que normalmente é representado por uma chave primaria e auto-incremental em um banco de dados. Então basta apenas saber o valor deste identificador, para que seja feito a recuperação das informações na página de exibição da notícia, que será a Noticia.php.

Então estruturaremos o .htaccess da seguinte forma:

RewriteEngine on
RewriteRule           ^noticia\/([0-9]+)(\/[a-z0-9_-]+)?(\/[a-z0-9_-]+\.html)?$ Noticia.php?id=$1&categoria=$2&titulo=$3
Noticia.php?id=$1&categoria=$2&titulo=$3

Verifique que a expressão regular utilizada na instrução atende a estrutura da URL. E que através do primeiro parâmetro, identificado como um numero de 0 a 9 maior ou igual a um dígito, representa o identificador necessário para a visualização da notícia e que será passado via GET através da variável “0id”. E os outros parâmetros que identificam a categoria e o título da notícia podem vir ou não a ser usados.

Rapidamente, voltando ao assunto sobre Segurança citado anteriormente, é neste momento que é possível estruturar uma expressão regular que não deixe brechas para a inclusão de informações indevidas na URL. No caso do identificador da notícia (id), a expressão não possibilita a que um usuário tente inserir outras informações que não seja apenas números, se tentar fazer isto, a página não será encontrada, e irá dar o erro 404 de página não encontrada. Desta forma, conseqüentemente você já estará validando as informações vindas via URL, mantendo a integridade dos dados.

E por fim, veja na figura abaixo o código da página Noticia.php e na linha 9 o resultado da execução proveniente do clique no primeiro link da lista (resultado Noticias.php).

<?
	$IdNoticia = $_GET["id"];
	$Categoria = $_GET["categoria"];
	$Titulo = $_GET["titulo"];
	
	print "$IdNoticia # $Categoria # $Titulo";
	
	//Resultado:
	//1 # /categoria-01 # /titulo-da-noticia-01.html 
?>

Fique livre em estruturar a URL conforme suas necessidades, mas sempre lembre em tornar, com pequenos detalhes, suas URL’s mais competitivas, seguras e agradáveis.

Conclusão

Neste artigo foram mostradas as vantagens de se utilizar URL Rewriting, juntamente com exemplos práticos da utilização do módulo Mod_Rewrite do servidor web Apache. Lembrando que é de extrema importância o estudo sobre Expressões Regulares, para a utilização correta deste recurso. Além do Apache é possível executar esta técnica em outros servidores web, como, por exemplo, no IIS (Internet Information Services) e também com outras linguagens como ASP .NET e Java. Mas isso é assunto para o próximo artigo, obrigado.

Referências

Apache

http://en.wikipedia.org/wiki/Rewrite_engine
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
http://www.allsyntax.com/tutorials/Apache/21/Mod_Rewrite-URLs-for-Search-Engines/1.php

IIS

http://www.qwerksoft.com/products/iisrewrite/
http://www.isapirewrite.com/
http://www.motobit.com/help/url-replacer-rewriter/iis-mod-rewrite.asp
http://cheeso.members.winisp.net/IIRF.aspx

ASP.NET

http://www.urlrewriting.net/en/Default.aspx
http://weblogs.asp.net/fmarguerie/archive/2004/11/18/265719.aspx

Java

http://www.zlatkovic.com/httpredirectfilter.en.html
http://tuckey.org/urlrewrite/
http://software.softeu.cz/rewriter/

Darley Passarin

é bacharel em Sistemas de Informação pela Ulbra/TO. Trabalho como Engenheiro de Software na Diretoria de Tecnologia da Informação e Comunicação da Fundação Universidade do Tocantins (UNITINS), com projetos voltados a E-learnning. Possuo conhecimentos avançados em PHP, ASP .Net C#, Java, Web Standards, UML e Desenvolvimento baseado em Componentes.

Email

Leia os últimos artigos publicados por Darley Passarin

Comente também

40 Comentários

Leandro Vieira

Olá Darley, parabéns pelo artigo e pela sua didática aqui aplicada. Um abraço e motiva-se a nova publicações.

Michael Carajeleascov

Darley, parabéns pela matéria, sempre me incomodaram as url’s com as informações de consulta. Frequentemente vejo alguns sites com esse tipo de URL e nem imaginava como eram feitas, agora ja sei. Fiquei apenas com uma dúvida, para tralhar com ASP é só seguir o mesmo esquema, alterando as TAG’s?

Bruno Gasparetto

A explicação foi muito boa e ainda forneceu um belo material de consulta.
No entanto, segundo a Apache, é melhor utilizar as regras de rewriting no próprio arquivo de configuração, estipulando o diretório que receberá a regra.
Isto porque ao configurar o servidor para utilizar arquivos .httaccess a performance diminui, devido ao fato dele ter de procurar em todas as pastas e subpastas este arquivo.
Michael, o esquema é o mesmo, a diferença é que ao invés de chamar um arquivo .php vc utilizara o .asp.

Darley Passarin

Bem, primeiro obrigado pelos parabéns e fico feliz de terem gostado. Michael, como mencionado no texto, esta tecnologia é configurada no servidor web, desta forma, para que você possa aplicá-la com o ASP, será necessário configurar o IIS (porque o apache não roda ASP nativamente %u2013 veja uma solução para isto http://www.apache-asp.com/), cujo assunto será abordado em meus próximos artigos.
Quanto a configuração direto no http.conf para melhorar a performance, o Sr. Bruno está correto, na documentação do Apache é mencionado tal afirmação. Mas mesmo assim, para a maioria dos desenvolvedores que possuem seus sites armazenados em servidores de hospedagem, não possuindo acesso ao arquivo http.conf, está opção (.htaccess), descrita no artigo, é a melhor possível.
Estarei disponível para responder qualquer dúvida, obrigado.

Ricardo Benfica

tentei fazer o cod de varias maneiras para uma pagina assim http://www.meusite.com/artigos.php?id=1

ser http://www.meusite.com/artigos/1

alguem pode me dar uma ajuda? pedi ao host q liberasse o mod_rewrite..segundo eles foi liberado

Heloisa Fernanda

Olá, não consegui fazer download dos exemplos. O link esta quebrado e sendo redirecionado para a página principal.

Deni Carlos Gomes Augusto

Parabéns pela matéria – Uma das melhores que ja li aki no Imasters sobre php. Um grande abraço pra você.

Darley Passarin

Pessoal, para aqueles que não conseguiram baixar os arquivos utilizados no artigo, utilize a url http://www.darley.com.br/imasters/urlrewriting_exemplos.zip para baixá-los. Obrigado.

Darley Passarin

Ricardo Benfica, mesmo já tendo respondido sua dúvida por email, estarei mostrando a solução para seu problema, para que outras pessoas possam tirar suas dúvidas. Para tanto, crie um arquivo chamado .htaccess o coloque as seguintes instruções: RewriteEngine on RewriteRule ^artigos\/([0-9] )?$ artigos.php?id=$1 . Devido que neste campo de comentário não é possível quebrar linha, lembre-se que a instrução RewriteRule deve ficar na linha abaixo da “RewriteEngine on”. O segredo está na expressão regular, para isso é necessário ter conhecimento no assunto. Qualquer dúvida entre em contato.

    Felipe Lacerda

    Darley,

    existe a possibilidade do .htacess ter várias expressões regulares, tipo:
    Fazer a mascara em um diretório Noticias, em outro Detalhes, em outro Principal?

    Como criaria dentro de um único arquivo várias expressões?

Danilo Faustinoni Cabello

Não tive oportunidade ainda para testar, mas uma coisa que me intrigou é a falta de asterisco nas suas expressões como: RewriteRule (.)\.html $1.php precisa de um asterisco para ele redirecionar por exemplo teste.html para teste.php, certo?

E no caso de [0-9] teria que haver [0-9]{1,}?

Não quis parecer arrogante nem nada, gostaria apenas de saber se há alguma diferença especial nas regex do apache.

Vlw, abraço!

Darley Passarin

Olá Danilo Faustinoni Cabello, obrigado pelas observações, que estão corretas, por que na verdade alguns caracteres não apareceram após a publicação na internet. Desta forma, enquanto entro em contato para efetuarem estas correções, estou disponibilizando para download (http://www.darley.com.br/imasters/darley_passarin_url_rewriting.pdf) o arquivo original do artigo. Obrigado.

Leonardo Soares

Parabéns pelo artigo! Está ótimo!

Vinicius Gallafrio

Ola Darley, estou usando o IE 7 e os layers dos trechos de codigo ficam sobre o texto, o que prejudica a leitura do seu artigo. Por favor repasse essa info pra os tecnicos do site e me desculpe por usar esse espaço para isso, mas é que não encontrei outro local…. abraco

Darley Passarin

Olá Vinicius Gallafrio, a sua observação já foi informada à equipe técnica. Enquanto isso utilize o Firefox, por que além de não possuir este problema, todos os códigos ficam identados corretamente. Obrigado.

paulo pereira

Darley gostaria que você me ajudasse com o httpd… no meu arquivo não existe a linha “AddModule mod_rewrite.c” e quando eu adiciono ela ao arquivo da um erro do apache quando reiniciado.

Uso o apache 2.0.59

obrigado

juarez alencar

Olá Darley, muito interessante sua materia, semçre quis saber como fazer esse tipo de configuração em PHP, esse padrão utilizado pelo imasters nas suas URLs é muito legal, agora já sei o caminho das pedras e só tenho a agradecer.

Darley Passarin

Olá Pessoal, conforme algumas dúvidas expressas por alguns usuários, referente à configuração do Apache na versão 2.2, segue algumas instruções para esta configuração: Primeiro, remova o # da linha “LoadModule rewrite_module modules/mod_rewrite.so”;
Segundo, em todas as linhas que tiver a seguinte expressão “AllowOverride None”, substitua por “AllowOverride All”; Terceiro, reinicie o Apache e aproveite. Abraços…

Écio Virgílio

Ótima didática, excelente tema, Parabéns. Acho que o melhor artigo que jah li aqui no IMASTERS.

James Clebio Silva

Belo artigo, Darley…

Fernando Santana Medrado

Parabéns pelo artigo, vc conseguiu simplificar um assunto bem complexo…

E pra galera que tá começando nisso (como eu), aí vai um link de uma ferramenta q ajuda muito… flw.
http://www.mod-rewrite-wizard.com/

Tellys Castro

muita clara, exemplificada!!! nota 10
parabens

Tellys Castro

no apache 1,3,27 nao funcionoiu, pq sera… no 2.2 fucniona…

Bruno Trazzini

Options FollowSymLinks
RewriteEngine on
RewriteRule ^([0-9] \.html)?$ post.php?id=$1

Marcos Ferreira

Darley eu peguei estes exemplos e excutei no meu apache, quanto pesso para o arquivo noticia.php resgatar as variáveis ele nã resgata, porque? Eu joguei no servidor da locaweb também a mesma coisa, não funcionou. Me ajuda por favorrrrr

Xavier Klausener

Olá,
estou tentando converter a url: /produtos/120_nome_do_produto para /produto?cod=120.
Como faço isso?
Valeu!

Valdir Leite

digite aqui seu comentário

Michel Borges

Olá Pessoal estou a com a seguinte dúvida, coloquei o quero transformar a seguinte URL:
http://localhost/br/moveis/produto.php?cdproduto=3
Tranformar em:
http://localhost/br/moveis/produto/3

meu .htacess está dentro do diretorio localhost/br/moveis e está desta forma:

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)\.html$ /$1.php?cdproduto=$2

Não está funcionando, já tentei de tudo li em um monte de sites mas nada acontece. Estou desesperado já. Abraço.
Muito Obrigado.

Marcelo Vinicius

Deveria existir um manual desse com ASP, nunca vi, pois o que não falta é em PHP

Éwerton Cardoso

Darley parabens pelo artigo. Fiz aqui e deu certo, porém a pagina da noticia (http://www.maisdesenvolvimento.com.br/exemplo/noticia/1/categoria-01/titulo-da-noticia-01.html) não aparece imagen. Vc saberia me falar por que??

Coloquei os arquivos em http://www.maisdesenvolvimento.com.br/exemplos/

Obrigado!!

    Darley Passarin

    Olá Éwerton, para funcionar você terá que colocar /logo.png, ou seja, antes da imagem você tem que colocar o endereço completo da localização da imagem, por exemplo, se essa imagem estivesse dentro de uma pasta imagens, o endereço deveria ser /images/logo.phg. O / no inicio é fundamental para funcionar.

Éwerton Cardoso

Olá Darley, obrigado por responder. Fiz o que vc disse (coloquei o caminho completo) e não deu certo, o mesmo acontence para o css. Quando se acessa o arquivo noticia.php as imagens e o css aparecem normalmente, mas quando a url é reescrita (…/exemplo/noticia/1/categoria-01/titulo-da-noticia-01.html) não aparece. Será que tem algo a ver com o httpd.conf? Pois no meu httpd.conf não tem a linha AddModule mod_rewrite.c, ele tem só a linha LoadModule rewrite_module modules/mod_rewrite.so que descomentei tudo como foi indicado no tutorial.

Obrigado!

Éwerton Cardoso

Agora sim deu certo.. só agora fui entender o que disse. .rsrsr.. coloquei o caminho completo (http://www.maisdesenvolvimento.com.br/exemplo/estilos.css) e deu certo..
Muitiiiiiiisssimmmoooo obrigado!!

Marcelo Benevides

Estou com uma dificuldade em fazer com que o visitante retorne para a pagina inicial estando lendo uma noticia.
Uma segunda dificuldade, é no momento da leitura de uma noticia, o visitante clicar em uma outra noticia fica meio estranho a url e da 404.

Link que a classe gera:
/noticia/7/esporte.html/noticia/1/politica.html

Note que fica repetido a url atual e escrita a nova url para a qual o visitante deseja ir.
Como posso corrigir esta questão?

    Darley Passarin

    Marcelo, tente colocar uma / antes do index.html, ficando /index.html, desta forma, independente da página que ele esteja, ele será redirecionado para a página index no root do site.

    Marcelo Benevides

    Deu certo aqui a questão da / antes do index perfeito.
    Porem ainda tenho uma duvida:

    Link que a classe gera:
    /noticia/7/esporte.html/noticia/1/politica.html

    Preciso que ela gere links independentes
    Ja tentei uma serie de codigos e nenhum funcionou.
    tentei $_server, $request dentro da classe e fora dela, tentei tambem utilizar o RewriteBase
    porem as tentativas foram frustradas.

Queria uma ajuda de vcs, meu site abre desta forma as noticias

http://localhost/meusite/site/index.php?p=noticias ficaria assim: http://localhost/aparecidanet2010/site/materias.

http://localhost/meusite/site/?p=noticias_ver&id=316 queria que ficasse assim. http://localhost/meusite/site/materia/stf_decide_manter_arruda_na_cadeia.

Pois estou com um pouco de dificultade principalmente nas expressões.
Por favor se alguem souber me evie no email!

bfhlpynwbd

az7iwD ivfndwvbgumc, [url=http://cfjxzokctvvr.com/]cfjxzokctvvr[/url], [link=http://spthgcbnecau.com/]spthgcbnecau[/link], http://yhdvtbxtxwkn.com/

Vitor Hugo

Estou com um dúvida muito grande: é possível retirar aquele WWW?
Que nem o twitter é somente colocar twitter.com e ele está lá (outros sites também funcionam assim, porém eles aparececem com o WWW depois e não quero isso, pois pretendo criar um encurtador de URLs) ;-)

Qual a sua opinião?