Há alguns dias atrás, um amigo meu, me perguntou como ele poderia configurar Links Permanentes no site que ele estava desenvolvendo. Algo parecido com o funcionamento de site como Flickr, Twitter, Facebook, etc.
Exemplificando, o que ele desejava era algo do tipo:
www.flickr.com/photos/nome-de-usuario
www.flickr.com/photos/nome-de-usuario
www.twitter.com/nome-de-usuario
www.facebook.com/nome-de-usuario
Na ocasião, ele tinha o seguinte cenário:
URL:
www.site-do-amigo.art.br/artistas.php?nickname=fulano
Contudo ele queria:
URL PERMANENTE:
www.site-do-amigo.art.br/artistas/fulano
Passei para ele uma soluções, a la Wordpress (Using Permalinks), usando o mod_rewrite (mod_rewrite).
Entretanto eu gostaria de apresentar uma solução alternativa.
O sistema operacional usado foi o Ubuntu 12.04.
E os softwares usados foram o Apache 2.2.22 e o PHP 5.3.10.
Usando o cenário acima como exemplo...
Crie um arquivo chamado artistas.php na raiz do site.
URLs amigáveis sem o mod_rewrite.
O sistema operacional usado foi o Ubuntu 12.04.
E os softwares usados foram o Apache 2.2.22 e o PHP 5.3.10.
Usando o cenário acima como exemplo...
Crie um arquivo chamado artistas.php na raiz do site.
#vi artistas.php
Dentro deste arquivo (artistas.php), adicione o seguinte conteúdo:
<?php $recebi = str_replace("/artistas/", "", $_SERVER['REQUEST_URI']); $separar = split("/", $recebi); if ( isset($_GET['nickname']) ) { $nickname = $_GET['nickname']; } else { $nickname = $separar['0']; } if ( $nickname == 'linux' ) { echo "Home do GNU Linux"; } else if ( $nickname == 'mac' ) { echo "Home do Mac OS"; } else if ( $nickname == 'solaris' ) { echo "Home do Sun Soloris"; } else { echo "Home do M$ Windows"; } exit; ?>
Salve o arquivo.
Agora, abra o seu navegador e veja os resultados!
Quando digitamos:
http://127.0.0.1/artistas.php
http://127.0.0.1/artistas
http://127.0.0.1/artistas/
RECEBEMOS:
Home do M$ Windows
Quando digitamos:
http://127.0.0.1/artistas.php?nickname=linux
http://127.0.0.1/artistas/linux
http://127.0.0.1/artistas/linux/
RECEBEMOS:
Home do GNU Linux
Etc...
Testes feitos.
URLs Amigas funcionando.
Post terminado?
NÃO!
Agora você precisa saber como isto é possível sem o mod_rewrite.
Pois bem...
Dentro do meu VirtualHost, na diretiva Directory, eu possuo a seguinte linha:
Options -Indexes FollowSymLinks MultiViews
Note a opção MultiViews! Ela está ativada.
Se eu modificasse a linha para:
Options -Indexes FollowSymLinks -MultiViews
Testes feitos.
URLs Amigas funcionando.
Post terminado?
NÃO!
Agora você precisa saber como isto é possível sem o mod_rewrite.
Pois bem...
Dentro do meu VirtualHost, na diretiva Directory, eu possuo a seguinte linha:
Options -Indexes FollowSymLinks MultiViews
Note a opção MultiViews! Ela está ativada.
Se eu modificasse a linha para:
Options -Indexes FollowSymLinks -MultiViews
Reiniciando o Apache... e acessando a pagina outra vez, eu receberia uma bela mensagem 404:
Not Found
The requested URL /artistas was not found on this server.
NOTA IMPORTANTE:
Creia que a maior responsabilidade é sua. Proteja suas paginas da melhor forma possível.
Com o MultiViews ativado você facilita, à um possível atacante, a localização e acesso a recursos que deveriam ser ocultos.
Explicação dada... post terminado!
Creia que a maior responsabilidade é sua. Proteja suas paginas da melhor forma possível.
Com o MultiViews ativado você facilita, à um possível atacante, a localização e acesso a recursos que deveriam ser ocultos.
Explicação dada... post terminado!
Paz a todos!
0 comentários:
Postar um comentário