Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Encontrei um post de um blog que ensina como fazer reescrita de URL's. Tentei aqui e consegui fazer funcionar mas ainda sim está muito confuso na minha cabeça.
Utilizei os seguintes arquivos, de um forma extremamente simples, apenas para aprender como a reescrita de URL's funciona:
.htaccess
RewriteEngine On
RewriteRule ^index\/?(.+)\/?(.+)\/?$ index.php?pagina=$1
index.php
<?php
error_reporting(E_ALL);
?>
<html>
<head>
<title>TESTE DO MOD_REWRITE</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<?php
if(isset($_GET['pagina'])) {
switch($_GET['pagina']) {
case 'contato':
require_once('contato.php');
break;
case 'noticias':
require_once('noticias.php');
break;
default:
require_once('principal.php');
break;
}
}
?>
</body>
</html>
principal.php
<h1>PRINCIPAL</h1>
<p>Blá blá!</p>
contato.php
<h1>CONTATO!</h1>
<p>Contato de tal e tal do tal!</p>
noticias.php
<h1>NOTÍCIAS</h1>
<p>Notícia</p>
<p>Notícia</p>
<p>Notícia</p>
<p>Notícia</p>
<p>Notícia</p>
Meu site está localizado na pasta /var/www/mod_rewrite/ . Quando digito no browser localhost/mod_rewrite/, localhost/mod_rewrite/contato, localhost/mod_rewrite/noticias, são carregadas, respectivamente, as páginas principal.php, contato.php e noticias. Se eu digitar localhost/mod_rewrite/lixo, por exemplo, recebo um
Not Found
The requested URL /mod_rewrite/lixo was not found on this server.
Apache/2.2.13 (Debian) Server at localhost Port 80
Não entendi porque ele não carrega a página principal.php, já que deveria entrar no default do switch.
Tenho muitas dúvidas de como isso tudo funciona.
Por exemplo, o que acontece quando o usuário digita o endereço no browser?
O que a primeira parte (^index\/?(.+)\/?(.+)\/?$) significa na regra de rewrite? Essa parte diz como a URL vai ficar?
O que é o index.php no começo? Qual o significado? Percebi que depois da reescrita, ele some da URL.
E a segunda parte (index.php?pagina=$1) ? O que é o $1 ?
Como http://localhost/mod_rewrite/index.php?pagina=contato se transforma em http://localhost/mod_rewrite/contato ?
Muito obrigado, aguardo respostas. Enquanto isso vou continuar pesquisando. :)
Carregando comentários...