• Olá Visitante, se gosta do forum e pretende contribuir com um donativo para auxiliar nos encargos financeiros inerentes ao alojamento desta plataforma, pode encontrar mais informações sobre os várias formas disponíveis para o fazer no seguinte tópico: leia mais... O seu contributo é importante! Obrigado.

Editar htaccess para criar enderecos URL

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Manual para aprender a utilizar o arquivo htaccess de Apache com o objetivo de criar URLs para nossas páginas amigáveis a buscadores e facilmente divulgáveis.




Capítulos do manual




1.- Introdução a .htaccess e às URLs amigáveis a buscadores
O arquivo .htaccess serve, entre outras coisas, para melhorar a promoção de sua web. Com ele se podem definir redirecionamentos de URLs amistosas para buscadores para URLs com passo de parâmetros.


2.- Redirecionamento de URLs a buscadores para URLs com passo de parâmetros
Continuamos com o manual explicando um primeiro caso simples de redirecionamento de URLs amistosas a buscadores usando RewriteRule.


3.- Exemplo mais complexo de RewriteRule
Vemos um segundo caso de redirecionamento de URLs amigáveis a buscadores para URLs com passo de parâmetros.


4.- Não ter duas URL com os mesmos conteúdos
Se utilizarmos htaccess deveremos prestar especial atenção a não ter duas páginas, com URLs distintas, que tenham exatamente o mesmo conteúdo.


5.- Redirecionamentos cíclicos com .htaccess
Um erro típico ao realizar redirecionamentos com htaccess é criar um redirecionamento cíclico.


6.- Mudança de URL redirecionamento 301 com .htaccess
Explicamos a maneira de realizar um redirecionamento tipo 301 (moved permanently) de uma URL antiga a uma nova, utilizando o arquivo .htaccess.


7.- Caractere $ para finalizar os padrões de redirecionamento com .htaccess
Utilizando em .htaccess o símbolo $ ao final de um padrão indicamos que a URL deve acabar nesse ponto.


8.- Padrões de expressões regulares para htaccess
Exemplos de padrões de expressões regulares utilizados comumente para redirecionamentos com htaccess.


9.- Mais exemplos de regras .htaccess
Outra série de exemplos de regras htaccess que podem servir para criar facilmente nossos padrões de expressões regulares.

 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Introdução a .htaccess e às URLs amigáveis a buscadores



O arquivo .htaccess serve, entre outras coisas, para melhorar a promoção de sua web. Com ele se podem definir redirecionamentos de URLs amistosas para buscadores para URLs com passo de parâmetros.
Por Miguel Angel Alvarez - Tradução de JML

Algumas URL são melhor consideradas pelos motores de busca tipo Google que outras. Isto já havíamos comentado em nosso manual de divulgação de webs. Por exemplo, URLs como estas não são muito atrativas para a divulgação das páginas:

_www.dominio.com/artigos/mostra.php?id=23
_www.dominio.com/cidades/cidade.php?nome=petropolis

Embora uma URL com parâmetros tenha conteúdos específicos, os buscadores não as pontuam tão bem como se fossem os mesmos conteúdos com URLs sem passo de parâmetros.

_www.dominio.com/artigos/23.php
_www.dominio.com/cidades/petropolis.php

Inclusive, o endereço do artigo 23.php, poderia ser melhor se incluísse na própria URL alguma palavra-chave, por exemplo, se o artigo falasse sobre carros antigos, um endereço melhor seria:

_www.dominio.com/artigos/carros_antigos.php

Referência: Em nosso manual de posicionamento em buscadores explicamos com detalhe as vantagens de utilizar URLs amistosas a buscadores.

Ao ver uma URL como esta, parece como se no servidor web, no diretório artigos tivéssemos um documento chamado carros_antigos.php. À princípio teria que ser assim para que este endereço fosse correto e não produzisse um erro 404 de página não encontrada. Agora imaginemos que temos centenas ou milhares de artigos. Então, deveríamos que ter dentro do diretório artigos seus correspondentes centenas ou milhares de arquivos. Isto não é muito bom para a manutenção da página, porque cada vez que se publica um artigo se deveria criar o correspondente arquivo no servidor, no diretório adequado.

Pode ser que já saibamos sobre esta idéia das URLs amistosas para buscadores, porém agora vamos comentar sobre como realizá-las obtendo ajuda através do arquivo .htaccess e a instrução RewriteRule. Com isso, podemos criar URLs facilmente no servidor sem que se correspondam com documentos que tenhamos na própria estrutura de diretórios. Ou seja, Apache será capaz de servir URLs que realmente não existem no servidor, fazendo o redirecionamento a outros arquivos e processando mediante PHP, ou outro linguagem de programação compatível, para mostrar uns conteúdos ou outros dependendo da URL que se está tentando acessar.

A inclusão de palavras-chave dentro das URLs e conseguir evitar o passo de parâmetros, todo mediante o htaccess, é uma técnica cada vez mais usada, que devemos conhecer e utilizar para que nossa página seja facilmente divulgável em buscadores.

O .htaccess é um arquivo de texto próprio de Apache, que se coloca em qualquer dos diretórios de publicação do servidor web e afeta ao diretório onde estiver colocado e a todos seus subdiretórios. Com .htaccess se podem configurar muitos temas variados para esses diretórios, sem ter que tocar o arquivo httpd.conf de Apache, que é onde se salvam as configurações gerais do servidor.

Nós vamos explicar o uso da instrução RewriteRule, embora htaccess sirva para configurar outros muitos assuntos.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Redirecionamento de URLs a buscadores para URLs com passo de parâmetros



Continuamos com o manual explicando um primeiro caso simples de redirecionamento de URLs amistosas a buscadores usando RewriteRule.
Por Miguel Angel Alvarez - Tradução de JML

Agora veremos como realizar com htaccess umas regras de redirecionamento, das URLs pensadas para que estejam bem promovidas em buscadores para endereços que nos sejam fáceis de processar e manter com PHP.

Nota: Falamos de PHP porque estes truques com htaccess são para o servidor Apache e a linguagem de programação típico deste servidor web é PHP.

O arquivo htaccess é um arquivo de texto que se chama .htaccess, ou seja, seu nome começa com um ponto. Pode-se criar com qualquer editor de textos e se coloca no diretório onde desejarmos que afetem as configurações indicadas dentro do arquivo. Se o colocamos no diretório de publicação raiz do domínio, afetará a todos os diretórios do domínio, pois este arquivo modifica o diretório que o contém e todos os subdiretórios.

O mecanismo para criar uns redirecionamentos pensados para um melhor posicionamento em buscadores é o seguinte. No arquivo .htaccess se define uma regra de redirecionamento interno, com esta sintaxe:

RewriteRule url_padrao url_destino

RewriteRule é a instrução para definir um redirecionamento, que recebe dois parâmetros: url_padrao e url_destino. No primeiro se especifica uma URL padrão. Quando o redirecionamento ao qual se está cessando cumpre o padrão indicado em url_padrao, se redireciona internamente para a URL de destino url_destino. A página se processa no arquivo indicado em url_destino.

O padrão é uma expressão regular que corresponde com um conjunto de URLs possíveis. Quando o visitante tenta acessar a uma URL que cumpre essa expressão regular, internamente se processa a página através da url_destino. Dizemos que é um processo interno, porque ninguém se intera que a URL se está processando através de outro arquivo, pois o endereço que aparece no navegador sempre será o original e os buscadores não poderão detectar que Apache realizou um redirecionamento interno para processar a página.

Sendo assim, para os visitantes e os buscadores que indexem os conteúdos de nossa web, os endereços que estão acessando são os amigáveis para os buscadores, apesar de que na realidade esses documentos não existam dentro da estrutura de diretórios do servidor e o processamento real da página se realize em outra URL de destino.

Um exemplo de instrução RewriteRule poderia ser o seguinte:

RewriteRule ^artigos/(.+)\.php codigo/ver_artigo.php?nome=$1

Como se disse, a primeira parte é o padrão que deve se cumprir para que se realize o redirecionamento interno. Tal padrão é uma expressão regular que tem uma sintaxe especial.

Nota: A parte mais complicada do trabalho com RewriteRule de htaccess é justamente a criação das expressões regulares. Nós não vamos explicar neste artigo a criação de expressões regulares, pois é bastante complexa, porém realizaremos suficientes exemplos como para conhecer os casos mais típicos.

O endereço que se está acessando no servidor (URL) tem que concordar com a expressão regular para que se realize o redirecionamento. Na primeira parte da instrução RewriteRule do exemplo indicado anteriormente tínhamos esta expressão regular:

^artigos/(.+)\.php

Para explicar esta expressão regular creio que é melhor vê-la por partes.

A primeira parte seria "^artigos/". Isto quer dizer todas as URL que comecem por "artigo/" (a palavra artigo seguida de uma barra). O caractere ^ significa o começo de uma expressão.

A segunda parte é (+.). O "+" significa uma ou mais repetições de algo. O "." significa qualquer caractere, logo "+." significaria uma ou mais repetições de qualquer caractere, ou seja, qualquer conjunto de um ou mais caracteres. O parêntese serve para agrupar expressões. Logo veremos para que nos pode servir esse agrupamento.

Por último, na expressão regular temos "\.php". A contrabarra é um caractere de escape que serve para que o "." seguinte não seja considerado como qualquer caractere, e sim como um ponto sem mais. Então, isto quer dizer ".php".

Em conjunto a expressão regular significa qualquer coisa que comece por "artigos/", seguido de qualquer caractere ou conjunto de caracteres, seguido de ".php".

Com esta expressão regular concordariam URLs como estas:

artigos/oquefor.php
artigos/outra-coisa.php
artigos/1234-xx_zz.php

Dizíamos que a parte com o (+.) quer dizer qualquer caractere ou conjunto de caracteres. Ademais, com este "asterisco" se pode construir a url_destino. Observemos na segunda parte do RewriteRule:

codigo/ver_artigo.php?nome=$1

Simplesmente se indicou outra endereço onde há um arquivo PHP que vai se encarregar de processar todas as URLs que cumpram o padrão explicado anteriormente. Se observarmos, dentro da url_destino temos um $1. Esta variável se substitui pelo que havia dentro do (+.) indicado no padrão da expressão regular.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Exemplo mais complexo de RewriteRule



Vemos um segundo caso de redirecionamento de URLs amigáveis a buscadores para URLs com passo de parâmetros.
Por Miguel Angel Alvarez - Tradução de JML

No anterior capítulo vimos como trasladar com RewriteRule parte de uma URL estática a uma URL com passo de parâmetros. Para isso definíamos no padrão um agrupamento com (+.) e logo a utilizávamos com $1 na URL redirecionada com passo de parâmetros. Ver o anterior artigo para mais informação.

Em algumas ocasiões não basta com enviar um parâmetro para que a página receba todos os dados que necessita para mostrar os conteúdos específicos.
Se na expressão regular tivéssemos outros (+.) então na url_destino teríamos que utilizar $1 para o primeiro (+.) que houver na expressão regular e $2 para o segundo, $3 para o terceiro e assim sucessivamente.

Por exemplo, aqui podemos ver uma instrução RewriteRule que utiliza duas partes com (+.) para fazer o padrão.

RewriteRule ^agenda/(.+)/(.+)\. html codigo/hora.php?mes=$2&ano=$1

Esta expressão regular quer dizer: Qualquer URL que comece por "agenda/", seguida de qualquer coisa, logo uma barra e qualquer outra coisa, acabado em ".html" (observar a contrabarra antes de ".html" que é um caractere de escape para indicar que o "." de antes de "html" é um ponto, em lugar do código especial que costuma significar qualquer caractere. Ver o artigo anterior para mais explicações sobre as expressões regulares deste estilo.

Como se pode ver, os endereços estáticos amigáveis a buscadores não têm porquê finalizar em . php. Neste caso finaliza em .html, porém poderia acabar de qualquer outra forma, como .htm, .php3, .shtml ou em um diretório.

No caso do exemplo anterior, um endereço com esta forma:

_www.dominio.com/agenda/2007/8

Fará corresponder com uma url_destino assim:

_www.dominio.com/codigo/hora.php?mes=7&ano=2007

Embora também poderiam ter concordado outros modelos de endereços como:

_www.dominio.com/agenda/05/01
_www.dominio.com/agenda/2006/abril

Será nossa responsabilidade fazer o tratamento para que só as URL que queremos mostrem a página correta. Veremos no próximo capítulo como fazer este tratamento de possíveis erros e como resolver outros possíveis problemas do uso do htaccess.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Não ter duas URL com os mesmos conteúdos





Se utilizarmos htaccess deveremos prestar especial atenção a não ter duas páginas, com URLs distintas, que tenham exatamente o mesmo conteúdo.
Por Miguel Angel Alvarez - Tradução de JML


Um dos problemas que podemos encontrar derivados do uso de htaccess para criar URLs amistosas a buscadores é o caso de que distintas URLs mostrem exatamente as mesmas informações.

Pelo visto, ter em um domínio duas páginas com os mesmo conteúdos não está bem visto pelos motores de busca, que podem considerá-lo uma trapaça encaminhada para lhe confundir e fazer pensar que o site é maior do que realmente é.

Como pode ser que duas páginas tenham os mesmo conteúdos?

Por exemplo, pensemos em uma regra como esta:

RewriteRule ^artigos/(.+)\.php codigo/ver_artigo.php?nome=$1

Isto quer dizer que existirão URLs como estas:

_www.dominio.com/artigos/plantas-decorativas.php
_www.dominio.com/artigos/plantas-medicinais.php
_www.dominio.com/artigos/plantas-aromaticas.php


Imaginemos que alguma pessoa se equivoca e nos põe um link a um artigo que não existe:

_www.dominio.com/artigos/plantas-decor.php
_www.dominio.com/artigos/plantas-medicina.php

Nós na página que mostra os artigos "ver_artigo.php" teremos que comprovar se existe um artigo com esse nome.
//tenho que ver se este artigo tem nome
$ssql = "select * from artigo where nome = $nome ";
$rs = mysql_query($ssql);
if (mysql_num_rows($rs)==0){
//é que não existe um artigo com esse nome
echo "Erro. Não temos esse artigo";
}

Com este código, cada vez que se escreva uma URL com um erro nos mostraria os mesmos conteúdos: a mensagem "Erro. Não temos esse artigo". Isto é algo que pretendíamos evitar.

Para evitar mostrar em URLs que não existem realmente os mesmos conteúdos, uma solução é fazer um redirecionamento a uma página de erro.

if (mysql_num_rows($rs)==0){
//é que não existe um script com esse id
header ("location: /erro_artigo.php");
exit();
}

Sendo assim, quando alguém se equivocar a compor a URL se mostrará uma mensagem de erro, porém para o buscador todas as mensagens se oferecem desde a mesma página web.

Também podemos fazer com que PHP envie ao navegador do usuário um cabeçalho com o erro de página não encontrada (erro 404 do HTTP).

header("HTTP/1.0 404 Not Found");

São duas possibilidades, cada qual pode utilizar a que desejar,embora seja possível que a do erro 404 seja mais útil e elegante.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Redirecionamentos cíclicos com .htaccess



Um erro típico ao realizar redirecionamentos com htaccess é criar um redirecionamento cíclico.


Por Miguel Angel Alvarez - Tradução de JML


Nosso manual de criar URLs amigáveis a buscadores com htaccess continua comentando alguns dos erros típicos que se podem cometer na hora de definir as regras de redirecionamento.

Em minha experiência com .htacces encontrei de uma forma fácil fazer um redirecionamento cíclico. Ou seja, definir um RewriteRule com um padrão que redireciona a uma URL que segue cumprindo o padrão. Como essa segunda URL concorda ainda com o padrão, se voltará a redirecionar e continuará cumprindo o padrão, com o que se voltará a redirecionar. E assim indefinidamente.

Ao escrever um endereço do domínio que cumpra o padrão, o resultado deste problema de redirecionamento cíclico será que Apache nos apresentará um erro "Internal Server Error", porém não será muito mais descritivo, por isso poderia se complicar para identificar o problema. Observemos nesta regra de redirecionamento:

RewriteRule ^dir/(.+)\. php dir/codigo.php?artigo=$1

Quer dizer que qualquer URL do diretório "dir" que acabe em .php, se redirecionará ao dir/codigo.php?artigo=xxx. Por exemplo:

_http://www.meudominio.com/dir/oqueseja.php

Redirecionará a: _http://www.meudominio.com/dir/codigo.php?artigo=oqueseja

Como se pode ver, a URL a que se redirecionará cumpre também o padrão, porque a URL a que se acessa também está dentro do diretório "dir" e acaba em PHP. (Não se tem em conta para comprovar o padrão, o parâmetro que se passa pela URL)

Esse RewriteRule seria incorreto, por padecer um redirecionamento cíclico. Para solucioná-lo podemos fazer várias coisas. Por exemplo, redirecionar a uma URL que não esteja dentro do diretório dir.

RewriteRule ^dir/(.+)\.php codigo-dir/codigo.php?artigo=$1

Isto funcionaria bem. A URL de antes Welcome

Será redirecionada para _http://www.meudominio.com/codigo-dir/codigo.php?artigo=oquefor

Outra solução que às vezes utilizei é redirecionar endereços acabados em . html a endereços acabados em .php. Como as terminações são distintas, não haverá redirecionamentos cíclicos:

RewriteRule ^dir/(.+)\.html dir/codigo.php?artigo=$1

Por exemplo, para a URL: _http://www.meudominio.com/dir/outracoisa.html

Será redirecionado a: _http://www.meudominio.com/dir/codigo.php?artigo=oquefor

Esta última URL, como não acaba em .html não cumprirá o padrão e não teremos o redirecionamento cíclico.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Mudança de URL redirecionamento 301 com .htaccess



Explicamos a maneira de realizar um redirecionamento tipo 301 (moved permanently) de uma URL antiga a uma nova, utilizando o arquivo .htaccess.


Por Miguel Angel Alvarez - Tradução de JML

Às vezes nos vemos com a necessidade de mudar os endereços de nossas páginas, seja por haver realizado uma reestruturação do site, uma reprogramação ou uma mudança de domínio. Não cabe dúvida que isto sempre é uma chatice, o melhor seria conservar os endereços antigos, que os nossos usuários já conhecem e estão corretamente posicionados em buscadores, porém às vezes não temos outra saída.

Nesses casos, o mais adequado é facilitar tanto a usuários como a motores de busca a localização das novas URLs que substituem às velhas. Existem várias maneiras de fazer isto, umas mais adequadas que outras, porém parece ser que, para buscadores como Google, o mais adequado é realizar um redirecionamento 301 "moved permanently". Sendo assim, estamos informando-lhes que os conteúdos mudaram de localização permanentemente, de modo que os motores de busca atualizarão os endereços em seus bancos de dados. Para os usuários, com um redirecionamento 301 seus navegadores mudarão as URL pelas novas de maneira transparente para os usuários, ou seja, sem que tenham que fazer nada.

Neste artigo veremos como realizar um redirecionamento 301 nos ajudando através do arquivo htaccess de Apache.





Realizar um redirecionamento 301 com htaccess é muito simples. Pode-se fazer com uma linha como esta no arquivo:

redirect 301 /url_antiga.html _http://www.dominio-novo.com/url-nova/

Como se pode ver, é lançado um comando redirect, tipo 301 e logo se indicam tanto a url antiga como a nova. A antiga simplesmente se indica com a URL relativa ao arquivo .htaccess. A nova URL se indica de maneira absoluta, começando com http://.

Também podemos fazer redirecionamentos em massa mais complexos utilizando padrões. Se os padrões concordam, então se realiza o redirecionamento.

Por exemplo, se quisermos que qualquer URL de um domínio se redirecione ao portal ou à página raiz de outro domínio, poderemos fazer isto:

redirectMatch 301 ^(.*)$ _http://www.website

Isto, em um domínio chamado, por exemplo, domantigo.com, redirecionaria qualquer URL como http://domantigo.com/oquefor/ a URL http://www.website. Ou então, uma URL como http://domantigo.com/dir/outracoisa.html se redirecionaria a http://www.website.com.

Agora, se desejarmos fazer um redirecionamento de uma URL de um domínio à mesma URL, porém em outro domínio, poderíamos fazer algo como isto:

redirectMatch 301 ^(.*)$ _http://www.website$1

Isto redirecionaria algo como http://domantigo.com/oquefor/ à URL _http://www.website/oquefor. Uma URL como _http://domantigo.com/dir/outracoisa.html a redirecionaria a _http://www.website/dir/outracoisa.html.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Caractere $ para finalizar os padrões de redirecionamento com .htaccess




Utilizando em .htaccess o símbolo $ ao final de um padrão indicamos que a URL deve acabar nesse ponto.
Por Miguel Angel Alvarez - Tradução de JML


Continuando com os comentários e conselhos do manual de .htaccess, há que comentar o uso do caractere $ nos padrões, para especificar o final de uma URL.

Para explicá-lo melhor vamos ver um exemplo.

Vejamos esta regra de .htaccess

RewriteRule ^artigos/(.+)\. html codigo/mostra_artigo_htaccess.php?id=$1

Esta regra diz que todas as URL como estas:

_www.dominio.com/artigos/x.html
_www.dominio.com/artigos/yyy.html

Serão processadas com o arquivo:

_www.dominio.com/codigo/mostra_artigo_htaccess.php?id=x
_www.dominio.com/codigo/mostra_artigo_htaccess.php?id=y

Porém, a coisa é que este padrão de htaccess também casa com outras url como estas:

_www.dominio.com/artigos/x.htmlkk
_www.dominio.com/artigos/x.html-oquefor

Isto é porque o padrão coincide, porque corresponde com a regra. Ou seja, a regra diz que começa a URL de depois do domínio por "artigos/" + qualquer conjunto de caracteres + ".html".

Teríamos que especificar de alguma forma que a URL deve terminar em ".html" e nada mais e para isso podemos utilizar "$" ao final da regra.

Agora esta outra regra .htaccess mais completa

RewriteRule ^artigos/(.+)\.html$ codigo/mostra_artigo_htaccess.php?id=$1

Neste caso indicamos com o "$" depois de \.html que a URL deve finalizar aí.

Algo como isto sim que concordaria a regra htaccess:

_www.dominio.com/artigos/algo.html

Porém, isto não se processaria pelo .htaccess, porque não acaba em .html:
_www.dominio.com/artigos/algo.htmlkk
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Padrões de expressões regulares para htaccess



Exemplos de padrões de expressões regulares utilizados comumente para redirecionamentos com htaccess.

Por Miguel Angel Alvarez - Tradução de JML


As expressões regulares são, digamos um osso duro de roer. Utilizam uma linguagem complicada que às vezes se torna difícil de entender ou de especificar. Por isso, é habitual que o desenvolvedor tenha certos problemas na hora de criar seus padrões de expressões regulares para utilizar no .htaccess. A mim mesmo, muitas vezes era complicado escrever as regras, até que entendi um pouco a linguagem de expressões regulares e criei uma série de regras de uso comum, que logo costumo reutilizar em meus arquivos .htaccess.

Neste artigo proporciono uma série de exemplos de regras htaccess, ou de padrões de expressões regulares que podemos utilizar em nossas páginas web. Não obstante, cabe lembrar aos leitores que temos diversos recursos interessantes para se documentar sobre estes assuntos em: Manual de htaccess

Sem mais, comecemos dando os distintos exemplos:

Exemplo 1 de expressão regular para htaccess

RewriteRule ^resultados/pagina_pg([0-9]+)\. php resultados/index.php?&_pagi_pg=$1

Esta regra pode servir bem para paginadores, porque cria URLs amigáveis que têm o número da página de resultados que se deseja ver. Esta regra redireciona tudo o que for como:

_www.meudominio.com/resultados/pagina_pg5.php
_www.meudominio.com/resultados/pagina_pg23.php
_www.meudominio.com/resultados/pagina_pg19992.php
… e qualquer outra combinação de números, com tantos dígitos como quantos forem necessários.

Aos endereços como estes:

_www.meudominio.com/resultados/index.php?&_pagi_pg=5
_www.meudominio.com/resultados/index.php?&_pagi_pg=23
_www.meudominio.com/resultados/index.php?&_pagi_pg=19992

Exemplo 2 de expressão regular para htaccess

RewriteRule ^pratos/letra_([a-z])\.php$ codigo/pratos_inicial.php?letra=$1

Esta regra htaccess é parecida à anterior, só que ao invés de números gerenciam iniciais e ademais, como não tem o signo "+", só aceita uma letra.

Aceita URLs como estas:
_www.meudominio.com/pratos/letra_a.php
_www.meudominio.com/pratos/letra_x.php

E redireciona estas URLs a endereços tal como estes:

_www.meudominio.com/codigo/pratos_inicial.php?letra=a
_www.meudominio.com/codigo/pratos_inicial.php?letra=x

Porém, não aceita mais de uma letra na inicial, e só aceitam minúsculas. Ou seja, estes endereços não concordariam com o padrão de expressão regular:

_www.meudominio.com/pratos/letra_xy.php
_www.meudominio.com/pratos/letra_A.php

Exemplo 3 de expressão regular para htaccess

RewriteRule ^pratos/pais_([a-z_-]+)\.php$ codigo/pratos_pais.php?nome_pais=$1

Esta regra avança um pouco na regra anterior, porque permite qualquer número de caracteres e ademais também aceita que se coloquem hífens baixos e médios.

Aceita URLs como estas:

_www.meudominio.com/pratos/pais_a.php
_www.meudominio.com/pratos/pais_abc.php
_www.meudominio.com/pratos/pais_a-b_c.php

Estes endereços as redirecionaria internamente a estas URL:

_www.meudominio.com/codigo/pratos_pais.php?nome_pais=a
_www.meudominio.com/codigo/pratos_pais.php?nome_pais=abc
_www.meudominio.com/codigo/pratos_pais.php?nome_pais=a-b_c

Esta regra não aceitaria nomes de países que tivessem uma maiúscula.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Mais exemplos de regras .htaccess




Outra série de exemplos de regras htaccess que podem servir para criar facilmente nossos padrões de expressões regulares.


Por Miguel Angel Alvarez - Tradução de JML


No artigo anterior estivemos dando uma série de exemplos para a criação de expressões regulares que podemos utilizar em arquivos .htaccess. Vimos uma série de padrões simples e agora vamos continuar mostrando outros padrões, também simples, porém um pouco mais elaborados.

Antes de tudo, deve-se ler o artigo anterior, caso ainda não o tenham feito: Padrões de expressões regulares para htaccess.

Exemplo 4 de regra htaccess

RewriteRule ^pratos/pais_([a-zA-Z_-]+).php$ codigo/pratos_pais.php?nome_pais=$1

Esta regra é similar à anterior, porém agora sim que estamos aceitando que alguns caracteres do nome do país venham em minúsculas. Por exemplo, aceita estas URLs:

_www.meudominio.com/pratos/pais_Espanha. php
_www.meudominio.com/pratos/pais_Reino-Unido.php

Que redirecionaria a URLs como estas:

_www.meudominio.com/codigo/pratos_pais.php?nome_pais=Espanha
_www.meudominio.com/codigo/pratos_pais.php?nome_pais=Reino-Unido

Exemplo 5 de regra htaccess

RewriteRule ^pratos/nome_([a-zA-Z0-9_-]+).php$ codigo/pratos_nome.php?nome=$1

Esta regla .htaccess complica ainda um pouco mais a regra anterior, com a possibilidade que também se coloquem números na expressão.

Redirecionará URLs como estas:

_www.meudominio.com/pratos/nome_paella.php
_www.meudominio.com/pratos/nome_PAELLA_2.php
_www.meudominio.com/pratos/nome_paella-mariscos.php
_www.meudominio.com/pratos/nome_Arroz3Delicias.php

Que enviará internamente o processamento dessas a estes endereços:

_www.meudominio.com/codigo/pratos_nome.php?nome=paella
_www.meudominio.com/codigo/pratos_nome.php?nome=PAELLA_2
_www.meudominio.com/codigo/pratos_nome.php?nome=paella-mariscos
_www.meudominio.com/codigo/pratos_nome.php?nome=Arroz3Delicias

Exemplo 6 de regra htaccess

Podemos repetir este esquema visto exemplo anterior as vezes que quisermos em URLs que tiverem uma série de diretórios, separados por barras. Será algo como isto:

RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+).html$ codigo/maiscodigo/processamento.php?parametro1=$1¶metro2=$2¶metro3=$3

Isto aceita endereços que tenham três diretórios distintos, um atrás do outro, separado claro pelas barras. Os nomes dos diretórios aceitam números, letras maiúsculas e minúsculas e hífens médios e baixos.

Aceita endereços tão variados como estes:

_www.meudominio.com/1/2/3. html
_www.meudominio.com/oquefor/OUTRACOSA/122.html
_www.meudominio.com/a_b_c_1/A-B-C-2/A-b_C_987.html

Internamente, htaccess processará essas regras e redirecionará a url como estas:

_www.meudominio.com/codigo/maiscodigo/processamento.php?parametro1=1&parametro2=2&parametro3=3
_www.meudominio.com/codigo/maiscodigo/processamento.php?parametro1=oquefor&parametro2=OUTRACOISA&parametro3=122
_www.meudominio.com/codigo/maiscodigo/processamento.php?parametro1=a_b_c_1&parametro2=A-B-C-2&parametro3=A-b_C_987
 
Topo