Jump to content


Photo

Urls Açucaradas...


  • Faça o login para participar
74 replies to this topic

#1 Klaus

Klaus

    @ ubuntu jaunty

  • Ex-Admins
  • 7924 posts
  • Sexo:Masculino
  • Localidade:127.0.0.1

Posted 18/01/2005, 16:09

Olá! :yes:

Resumo: Criar URLs mais amigáveis com Apache.
Dificuldade: 3/5
Ao som de (hehehehehe): Leonardo - Fantasias

-----

Requisitos: Servidor Apache com:

AllowOverride habilitado - http://httpd.apache....l#allowoverride

Opcional: mod_rewrite habilitado - http://httpd.apache....od_rewrite.html (Ele é interessante para algumas opções extras, não será usado neste artigo)

-----

Atualmente muito é discutido sobre a forma com que as URLs devem ser apresentadas. A técnica conhecida como QueryString, muito conhecida atualmente, torna ligeiramente mais complicada a questão da indexação das páginas pelos buscadores, uma vez que eles terão de "decidir" se a página: http://www.seusite.com/?newsid=777 é diferente de: http://www.seusite.com/?color=blue.

Veja este artigo sobre o assunto:

http://www.w3.org/Pr.../Style/URI.html

Talvez você já tenha visto o site: http://www.phpbrasil.com, ou melhor, a maneira com que suas URLs são formadas. Navegue por algumas páginas e veja a URL mostrada.

O site não usa QueryString! Melhor dizendo, não da maneira convencional. Chega dessa introdução... vamos ao know-how!

Só mais uma coisa... Antes de começarmos, vou lembrar a vocês que a URL:

http://www.seusite.c...ts/download/13/

Não necessariamente é composta de um caminho para a pasta 13. Quebrar esse paradigma é essencial para entender este artigo.

Vou reescrever a URL acima para facilitar o entendimento:

http://www.seusite.com/scripts.php/download/13/

Isso é um exemplo de URL que você está mais acostumado a ver, em que a página processada está explícita ali. Vale lembrar que a URL mostrada acima é perfeitamente válida. Qual nosso objetivo agora? Esconder aquela extensão, para dar a impressão de que a URL é apenas um caminho, ou seja, pastas.

Vá até a raiz do seu site e crie um arquivo de nome: "scripts", obviamente sem as aspas e, muito importante, sem extensão!!! Nele adicione o seguinte conteúdo:

<?php

echo @$_SERVER["PATH_INFO"];

?>


Agora abra o seu editor de textos para criarmos outro arquivo e digite:

<FilesMatch "scripts">
ForceType application/x-httpd-php
</FilesMatch>


Salve este arquivo com o nome de: ".htaccess". Isso, o arquivo não tem nome, só extensão. Este é um arquivo de configurações extras do Apache, que só será lido se AllowOverride estiver habilitado. Este arquivo irá dizer que o arquivo "scripts" é um arquivo PHP.

Pronto! Acesse agora: http://www.seusite.c...ts/download/13/

Repare que foi impresso a você:

/download/13/


Você pode explodir esta string e fazer o que quiser. Exemplo: o primeiro elemento é a ação (download) e o segundo é o ID do script (13).

Bons estudos!

-----

Referência extra:

http://evolt.org/art...d_PHP/18/22880/

http://www.ddj.com/d...2182/index.html

http://httpd.apache....o/htaccess.html





#####################################################
# Editado por Guilherme Blanco

Um meio simples de obter as variáveis passadas desta forma é este:

$address_exploded = explode($_SERVER['SCRIPT_NAME'], $_SERVER['PHP_SELF']);
if (isset($address_exploded[1]))
 $args = explode('/', $address_exploded[1]);

A partir daí, acesse as variáveis usando o array $args.

Exemplo:

echo (($args[2] == "php") ? "Seção PHP" : "Sei lá!");



# Fim do edit do GB
#####################################################

Edição feita por: Dudu, 14/03/2010, 14:34.

Klaus Paiva
Conheça também: Taperás

#2 enthroned

enthroned

    eh noizeh!

  • Usuários
  • 257 posts
  • Sexo:Não informado

Posted 18/01/2005, 20:30

mto interessante...eu estava atras disso faz tempo :D mas como sou mtoooo iniciante e nao manjo nada de ingles fica dificil...sera que alguem poderia criar um exemplo mais complexo bem detalhado?

Edição feita por: enthroned, 18/01/2005, 20:32.

=]

#3 Klaus

Klaus

    @ ubuntu jaunty

  • Ex-Admins
  • 7924 posts
  • Sexo:Masculino
  • Localidade:127.0.0.1

Posted 18/01/2005, 20:36

Mais complexo, envolveria quais recursos para você?
Klaus Paiva
Conheça também: Taperás

#4 enthroned

enthroned

    eh noizeh!

  • Usuários
  • 257 posts
  • Sexo:Não informado

Posted 18/01/2005, 22:30

digamos que a palavra nao seja compelxo...mas sim alguem fazer um pekeno tutorial...montando um menu em um site com os links utilizando este recurso que vc citou...
=]

#5 Klaus

Klaus

    @ ubuntu jaunty

  • Ex-Admins
  • 7924 posts
  • Sexo:Masculino
  • Localidade:127.0.0.1

Posted 19/01/2005, 07:55

hehehehehe mas não tem segredo. O segredo está em capturar o que está na URL e daí fazer algo com ele, um switch - http://www.php.net/switch - por exemplo.
Klaus Paiva
Conheça também: Taperás

#6 Need.Full

Need.Full

    nee^

  • Usuários
  • 123 posts
  • Sexo:Não informado
  • Interesses:ss

Posted 29/01/2005, 09:23

como faz para adaptar uma query assim : ?pagina=games&informacoes=completa&id=23456

taltaltal


para
/pagina/games/ingormacoes/completa/id/23456
???????

#7 Klaus

Klaus

    @ ubuntu jaunty

  • Ex-Admins
  • 7924 posts
  • Sexo:Masculino
  • Localidade:127.0.0.1

Posted 29/01/2005, 18:48

Você tem que fazer essa adaptação.

Captura os dados como já mostrado no exemplo e usa um explode para separar os dados.
Klaus Paiva
Conheça também: Taperás

#8 Fr0ZeN

Fr0ZeN

    12 Horas

  • Usuários
  • 124 posts
  • Sexo:Não informado

Posted 29/01/2005, 18:56

é um pouco mais dificil de se testar a consistencia dos dados dessa forma... mas é esteticamente mais profissional. Você tem que contar sempre as casinhas hehe, algo tipo a primeira casa, eh login, a segunda, é a id, a terceira, a ação... e assim por diante

#9 Klaus

Klaus

    @ ubuntu jaunty

  • Ex-Admins
  • 7924 posts
  • Sexo:Masculino
  • Localidade:127.0.0.1

Posted 29/01/2005, 19:26

Certamente, você não tem as variáveis predefinidas, como você disse muito bem.

Exige um cuidado até maior do programador com relação às validações.
Klaus Paiva
Conheça também: Taperás

#10 Need.Full

Need.Full

    nee^

  • Usuários
  • 123 posts
  • Sexo:Não informado
  • Interesses:ss

Posted 29/01/2005, 22:19

tipo, eu ja separei com o explode, tal. agora nao sei o resto

#11 jura

jura

    Turista

  • Usuários
  • 55 posts
  • Sexo:Não informado

Posted 30/01/2005, 00:16

Tambem fiquei na mesma que o Need.Full...sera que tem como alguem da um exemplo bem basico?

Jura

#12 Klaus

Klaus

    @ ubuntu jaunty

  • Ex-Admins
  • 7924 posts
  • Sexo:Masculino
  • Localidade:127.0.0.1

Posted 30/01/2005, 04:55

;) Galera, são só dados, nada mais... você faz o que quiser com eles... não existe tutorial para o que fazer com as informações!!!

De qualquer forma, um exemplo simples (parcial) que eu uso no meu sistema atual de ecommerce.

<?php
 
  // Obtêm todo o caminho existente na URI
  $uri = @$_SERVER["PATH_INFO"];
 
  // Explode o caminho obtido usando o separador "/"
  $uri = explode ("/", $uri);
 
  // Remove o primeiro e o último índices da matriz, pois estão vazios
  $uri = array_splice ($uri, 1, -1);

  // Definindo a variação de ação para o include
  $action = $uri[0];

  // Agora aquele BLABLABLA de switch para include...
  switch ($action) :

    case "Domus":

      include ("idx.php");

      break;

    case "Rogare":

      include ("terms.php");

      break;

    default:

      include ("idx.php");

      break;

  endswitch;

?>


Pronto... ;)

Referência de funções:

explode()
array_splice()
switch();
Klaus Paiva
Conheça também: Taperás

#13 rodurma

rodurma

    Normal

  • Usuários
  • 64 posts
  • Sexo:Não informado

Posted 31/01/2005, 15:20

Tem como fazer isso mais como se fosse um subdominio.

Tipo:
http://qualquercoisa...ivo.php?id=1234
ir para
http://www.meusite.c...ivo.php?id=1234

É que melhora mais para os buscadores.

O problema é que não queria ficar criando milhares de subdominios pelo cpanel.

se tiver alguma forma por fovar me ajudem.

Obrigado.

[]`s

#14 Klaus

Klaus

    @ ubuntu jaunty

  • Ex-Admins
  • 7924 posts
  • Sexo:Masculino
  • Localidade:127.0.0.1

Posted 31/01/2005, 15:35

Para fazer isso devemos usar o método de criar subdomínios dinamicamente, o que está longe dos objetivos deste tópico.
Klaus Paiva
Conheça também: Taperás

#15 Fr0ZeN

Fr0ZeN

    12 Horas

  • Usuários
  • 124 posts
  • Sexo:Não informado

Posted 10/02/2005, 18:04

sabe onde encontrar isso de subdominios dinamicos klaus?




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq