antiblock
Elveron
  • Chatbox

    You don't have permission to chat.
    Load More
Sign in to follow this  
☆♕ CabrinhaSexy ♕☆

Tutorial - Url Amigavel Parte 2 [Complexa]

3 posts in this topic

antiblock
Rodnia | Alpha & Omega

Ora boas meu pessoal :)

 

Como prometido, e como até recebi bastante apoio vosso pelo primeiro tutorial Parte 1, venho vos fazer a parte 2 do tutorial, onde vai ser um bocado mais hardcore e onde voces teram de se esforçar um pouco mais mas prometo que vou tentar explicar da melhor forma :P

 

Quem ainda não tiver visto a parte 1 está AQUI

 

Agora mãos á obra :P

 

Reescrevendo URLs que possuem parâmetros

 

www.omeusite.pt/carros.php?id=2 (URL Atual)

www.omeusite.pt/carros/honda/2/ (URL Amigavel)

 

Neste caso temos dois termos importantes na URL:

 

O termo marcado em amarelo identifica de qual URL estamos tratando, no nosso caso será a URL de exibição de um produto (um possível caso pra uma loja-virtual) ou que poderia ser o mesmo caso da exibição de uma notícia ou artigo num um site com esse tipo de conteúdo, etc etc, podes existir em milhares de coisas xD

 

O termo marcado em verde é o ID do produto… Esse é o valor que será usado internamente pelo teu carros.php para exibir o produto correto. Entendam que esse mesmo termo ou seja o ID, precisa estar presente na nova URL pois é exatamente ele que será usado pelo seu arquivo “antigo” quando a URL for redirecionada.

Não sei se disse isto no tutorial anterior se não disse digo agora, lembrem se que uma Url amigavel é simplesmente uma MÁSCARA para a vossa Url interna :P

 

E já deves tar neste altura a perguntar te para ti próprio e a reparar que adicionamos um novo “termo” (valor) que é o nome do produto… Neste caso é o (honda) Isso é meramente ESTÉTICO.

Isso apenas ajuda a melhorar a URL trazendo mais informações relevantes, aumentando a pontuação da página nos sistemas de busca e "dizendo" para o gajo ou a gaja xD ,o que ele verá ao clicar naquela URL mesmo antes de entrar nela :)

 

Bem... Assumindo que voces estão a seguir o meu raciocinio, vamos prosseguir então para a prática, aprender realmente como se faz isto no código.

 

Agora abrindo o nosso ficheiro .htaccess para reescrever a URL anterior (da página de contacto) e essa nova URL mais complexa, ficará assim:

<IfModule mod_rewrite.c>	RewriteEngine On	# Página de contato	RewriteRule ^contato/?$ /contato.php [NC,L]	# Página de exibição de um produto	RewriteRule ^carros/([a-z0-9-]+)/([0-9]+)/?$ /carros.php?id=$2&nome=$1 [NC]</IfModule>
Agora começar as explicaçoes de cada um dos parametros 1 por 1 :P
RewriteRule ^carros/([a-z0-9-]+)/([0-9]+)/?$ /carros.php?id=$2&nome=$1 [NC]

Agora vamo-nos empenhar um pouco em entender expressões regulares!!! Tudo com atenção, senão levam tau tau xD

 

O que é uma expressão regular ?

 

As expressões regulares ou RegExp ou ER são formas de validares uma string (texto).

 

Suponhamos que tu precisas verificar se uma string é composta apenas por letras minúsculas. Tu podes fazer isso com a expressão regular ^[a-z]+$, e entender o que isso significa:

 

Como em todas as linguagens, ou bem.. Isto não é bem uma linguagem mas por exemplo, quando voces começam uma linha de codigo, ele tem sempre um caracter especial que indica o seu inicio, e outro quando indica o seu fim, então pronto aqui é a mesma coisa!

 

O circunflexo ^ significa “o começo da string” e o cifrão $ significa “o fim da string”… Então, toda a ER que estiver entre o ^ e o $ precisa “validar” para toda a string, e não apenas uma parte dela.

 

Entre eles temos [a-z]+, isso significa: um grupo de caracteres (delimitado pelos parenteses [ ]) composto por “qualquer letra minúscula” (a-z) que tenha no mínimo 1 caractere +

 

A expressão regular a cima iria validar strings como planeta e casa mas iria invalidar strings como casal feliz, planeta1, CaSa ou pôr-do-sol pois essas strings não possuem apenas letras de a-z minúsculas, contem espaços, e outras numeros etc, para isso usamos outras validações, que já vao perceber asseguir.

 

Outro exemplo que podemos usar é a expressão ^[0-9]{3,9}-(.*)$ que vamos esclarece-la agora:

 

Começamos com [0-9]{3,9} que significa um grupo de números (de 0 a 9) que tenha entre 3 e 9 dígitos, ou seja: qualquer número de 3 até 9 digitos.

 

Depois temos um hifen - normal, nada de especial aqui.

 

E no final da ER temos (.*) que significa, qualquer caractere! Qualquer coisa! Eu explico: o ponto . é o caractere coringa das expressões regulares, e o asterisco * signficia “nenhuma, uma ou mais de uma ‘unidade’ do caractere anterior”.

 

Por exemplo, não sei se voces teem conhecimentos em CSS, se teem, sabem que o seletor *{} engloba propriedades para o documento INTEIRO, aqui é a mesma coisa :P (Se não tem conhecimentos de CSS e se eu vos confundi ainda mais com este exemplo, esqueçam xD)

 

Voltando ao assunto principal, sabendo disso, podemos entender que a expressão regular ^[0-9]{3,9}-(.*)$ valida strings como 014-a8!@cas, 11111-eahuaa e 123456789-, mas não valida strings como 0-a8!@cas, -eahuaa, 8928745614-abc e 89-abc pois as mesmas não começam com “números entre 3 e 9 digitos” [0-9]{3,9}

 

Poderiamos modificar a expressão regular para: ^[0-9]{3,9}- e ela teria o mesmo comportamento pois só precisamos verificar o começo da string :D

 

Se quiseres perceber melhor ainda o que está a ser explicado aqui recomendo que pares uma bocado para analisar o seguinte Guia de Expressões Regulares, é muito bom e vai te ajudar a entender melhor uma das sete maravilhas da Informática que é uma Expressão Regular <3

 

Agora que já vos dei a seca da teoria de e o que é uma expressão regular e como ela funciona vamos voltar a nossa URL Amigável : RewriteRule ^carros/([a-z0-9-]+)/([0-9]+)/?$ /carros.php?id=$2&nome=$1 [NC]

 

Primeiro parte :

 

Na primeira parte em amarelos temos ^carros/([a-z0-9-]+)/([0-9]+)/?$  e o que isto significa ?

 

Vamos lá dividir isto em 3 partes como já aprendemos até agora.

 

^carros/ isto significa que a URL precisa de começar com carros/

 

/([a-z0-9-]+)/  – A expressão regular ([a-z0-9-]+) significa “no mínimo um(a) + letra minúscula a-z OU letra maiúscula A-Z OU número 0-9 OU um hífen -”

 

/([0-9]+)/?$ – E por fim temos ([0-9]+) que signfica “no minimo + um número 0-9” seguido de uma barra opcional /? e o fim da URL

 

Isso tudo significa que, com a primeira parte, validamos strings como /motas/suzuki/2/, /carros/honda/89/ e /produtos/cachecol-rosa-da-2a-africa-do-sul/666/ e invalidamos strings como /produtos/palhaço/a/, /produtos/camisa/ ou /produtos/camisa fixe/187a/

 

Segunda Parte:

 

Na segunda parte em verde temos /carros.php?id=$2&nome=$1 que vamos explicar agora o que significa

 

Significa que iremos passar os valores encontrados na primeira parte para uma nova URL interna, ou seja, chamaremos o arquivo /carros.php e passaremos dois parâmetros via GET para ele:

 

Temos o $2 o no parâmetro id, esse “cifrao dois” significa a segunda “variável” encontrada na URL, que nesse caso é a parte ([0+9]+) da expressão regular, que conterá o ID do produto.

 

E temos o $1 no parâmetro nome, esse “sifrao um” significa a primeira “variável” encontrada na URL, que nesse caso é a parte

([a-z 0-9-]+) da expressão regular, que conterá o nome do carro! :D

 

Com isso tudo, ao chamar a URL /carros/honda/2/ o Apache irá, malandramente e internamente, direcionar a requisição para o caminho /carros.php?id=2&nome=honda que como vos disse lá no inicio do post é a nossa url amigavel, mas "desmascarada", ou seja ela continua a existir mas não é mostrada :P

 

Ve se entendes entao que os valores (2 e honda) foram passados para o “antigo” arquivo, cada um em seu devido lugar… Com isso, ao executar o arquivo /carros.php vais ter acesso aos dois valores que foram passados na URL Amigável utilizando a super-global $_GET:

<?phpecho 'ID do produto: ' . $_GET['id']; // 2echo '<br />';echo 'Nome (slug) do produto: ' . $_GET['nome']; // camiseta-azul?>

Melhor que isto é impossivel u_u

 

E por ultimo na terceira parte:

 

Na terceira parte, em azul claro, temos [NC],  que ja foi explicado antes e significa “No Case” ou “Sem distinção de minúsculas ou maiúsculas”. :P

 

Bem e é isto pessoal!!

 

Só para reforçar para quem ainda não pegou a essência da coisa: Na primeira parte temos uma expressão regular que, se ela validar a URL que o visitante está acessando, a requisição vai ser redirecionada para o caminho especificado na segunda parte.

 

Mais exemplos de URLs Amigáveis

Vamos ver mais alguns exemplos que podemos colocar no nosso .htaccess e o entendimento de cada uma das regras, fica TUA sua conta:

<IfModule mod_rewrite.c>	RewriteEngine On	# Página de contato	RewriteRule ^contato/?$ /contato.php [NC,L]	# Página de exibição de um produto	RewriteRule ^produtos/([a-z0-9-]+)/([0-9]+)/?$ /produtos.php?id=$2&nome=$1 [NC]	# Página de exibição de uma categoria de livros	RewriteRule ^livro/([a-z0-9-]+)/?$ /livros.php?categoria=$1 [NC,L]	# Página de exibição de um artigo com a data na URL	RewriteRule ^artigo/([0-9]{4})/([0-9]{2})/([0-9]{2})/([a-z0-9-]+)/([0-9]+)/?$ /artigo.php?id=$5&nome=$4&data=$1-$2-$3 [NC]</IfModule>

E pronto pessoal, espero que voces tenham gostado, desta segunda parte do tutorial, e que vos seja util em algo, nos vossos futuros projetos para que eles tenham melhor apresentação de conteudo, melhores resultados nos motores de busca e e e e .... BUES CENAS xD

 

Vá pessoal Cumprimentos <3

Ora ai está um tutorial de se louvar... Logo vi que teve de ser postado pelo meu gayzinho  :like:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this