Mudanças entre as edições de "URL Amigável ou Mod Rewrite"

De Wiki Integrator do Brasil
Ir para: navegação, pesquisa
(Criou página com ''''URL amigável''' ou, '''URLs Amigáveis''', são a forma que os desenvolvedores usam para rescrever um endereço de site dinâmico, geralmente em PHP, da forma original par...')
 
Linha 13: Linha 13:
 
'''2.''' Conhecimento de regex.
 
'''2.''' Conhecimento de regex.
  
'''Exemplo''':
+
'''Exemplo''':<br />
 
Um site contendo o seguinte conteúdo:<br />
 
Um site contendo o seguinte conteúdo:<br />
 
http://integrator.com.br/hospedagem.php?plano=1
 
http://integrator.com.br/hospedagem.php?plano=1
Linha 20: Linha 20:
 
http://integrator.com.br/hospedagem/plano-php-basico
 
http://integrator.com.br/hospedagem/plano-php-basico
  
Teria um .htaccess assim:
+
Teria um '''.htaccess''' assim:
  
 
RewriteEngine On<br />
 
RewriteEngine On<br />
Linha 26: Linha 26:
 
ErrorDocument 404 /404.php<br />
 
ErrorDocument 404 /404.php<br />
 
RewriteRule ^hospedagem\/plano-php-basico$  /hospedagem.php?plano=1 [NC,L]
 
RewriteRule ^hospedagem\/plano-php-basico$  /hospedagem.php?plano=1 [NC,L]
 +
  
 
Já existem casos mais complexos, que precisam operar em Regex, por exemplo, digamos que a '''URL''' seja:<br />
 
Já existem casos mais complexos, que precisam operar em Regex, por exemplo, digamos que a '''URL''' seja:<br />
Linha 39: Linha 40:
 
Para entender melhor o trecho do .htaccess:<br />
 
Para entender melhor o trecho do .htaccess:<br />
 
RewriteRule ^([a-z]+)\/([a-z]+)\/([0-9]+)$  sistema.php?act=$1&model=$2&id=$3 [NC,L]
 
RewriteRule ^([a-z]+)\/([a-z]+)\/([0-9]+)$  sistema.php?act=$1&model=$2&id=$3 [NC,L]
 +
  
 
----
 
----

Edição das 17h57min de 25 de setembro de 2014

URL amigável ou, URLs Amigáveis, são a forma que os desenvolvedores usam para rescrever um endereço de site dinâmico, geralmente em PHP, da forma original para uma mais “amigável” a leitura, tanto para o endereço no navegador, como para os buscadores como o Google.

Por exemplo, digamos que seu site tenha um link chamado hospedagem, que é dinâmico, onde seu usuário acessaria ele da forma abaixo:
http://integrator.com.br/?p=2

Mas os usuários podem ter dificuldade em lembrar o endereço todo de uma vez, ou até mesmo memorizar na barra de endereço qual número é a página que desejam ver. Com o intuito de facilitar, você modifica o comportamento para que seja visível assim:
http://integrator.com.br/hospedagem

Internamente, o “?p=2” permanece existindo. Mas para seu usuário, o navegador/browser e os buscadores, é na realidade “hospedagem”.

A rescrita foi feita pelo servidor, usando recursos de diretrizes existentes no Apache através do .htaccess. Digamos que seja um “truque” que envolve:
1. Lógica de programação
2. Conhecimento de regex.

Exemplo:
Um site contendo o seguinte conteúdo:
http://integrator.com.br/hospedagem.php?plano=1

E deseja deixar ao seu usuário visível:
http://integrator.com.br/hospedagem/plano-php-basico

Teria um .htaccess assim:

RewriteEngine On
RewriteBase /
ErrorDocument 404 /404.php
RewriteRule ^hospedagem\/plano-php-basico$ /hospedagem.php?plano=1 [NC,L]


Já existem casos mais complexos, que precisam operar em Regex, por exemplo, digamos que a URL seja:
http://integrator.com.br/edit/host/1

Temos que usar uma expressão regular assim:
([a-z]+)\/([a-z]+)\/([0-9]+)

O arquivo em por trás desta URL, serial algo como:
http://integrator.com.br/sistema.php?act=$1&model=$2&id=$3

Onde cada $número é o número do grupo em sequência ao que foi analisado pela expressão regular.
Para entender melhor o trecho do .htaccess:
RewriteRule ^([a-z]+)\/([a-z]+)\/([0-9]+)$ sistema.php?act=$1&model=$2&id=$3 [NC,L]



IMPORTANTE: Sem experiência, procure estudar para entender o que pretende fazer ou , sempre que possível, buscar ajuda de profissional qualificado experiente para instruí-lo em como resolver a questão do seu programa. O suporte da Integrator por ser hospedagem, em momento algum será responsável por tal ajuda de desenvolvimento comportamental particular e nem resolução das conseqüências de configurações erradas que obtiver.