Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RinaldFN

URL amigável

Recommended Posts

Olá a todos,

 

Gostaria de uma ajuda para interpretar um ER usana pelo apache para a reescrita da URL

 

Eu estou usando a seguinte regra de escrita:

RewriteRule ^\/?([a-zA-Z]+)?\/([a-zA-Z]+)?\/? pagina.php?s=$1&p=$2

 

Pelo que eu entendi, os parametros que estão dentro dos parenteses serão os conteudos capturados da URL sendo que o conteudo do primeiro parentese corresponste a variavel $1 e o do segundo correspnde a $2 Seria isso?

 

O que não entendi é porque tem que ter o ^\/? no inicio.

 

Obrigado a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rapaiz... isso é Expressão Regular^ - indica o inicio da String\/ - indica que vem uma / no primeiro caractere (\ serve para escapar)? - Indica que o parametro é opcional([a-zA-Z]+)? - Indica que pode vir uma sequencia de um ou mais caracteres de 'a' a 'z' minusculos ou maiusculos (o + indica 1 ou mais caracteres), sendo estes opcionais tambem (?)pagina.php?s=$1&p=$2 - A variavel $1 irá conter a string que contiver no primeiro subgrupo ([a-zA-Z]+)?, e $2 irá conter a string do segundo subgrupo ([a-zA-Z]+)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, valeu pela ajuda..

 

#INSIDE# foi graças ao seu video tutprial que consegui criar mais ou menos.

 

mas o problema que estou enfrentando é o seguinte: Eu criei a regra de escrita para o formato de URL assim:

 

pagina.php?s=eventos&p=sites

 

E a regra ficou :

^\/?([a-zA-Z]+)?\/([a-zA-Z]+)?\/? pagina.php?s=$1&p=$2

Só que eu também tenho URL no formato: pagina.php?s=contato

 

com uma variavel só..

 

E neste caso quando digito meusite/contato não funciona..

Somente funciona quando passo dois parametos: meusite/eventos/sites

 

 

no caso eu teria que criar outra regra?

 

 

Obrigado mais uma vez..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rapaiz... Existe uma forma melhor de fazer isso...

 

Coloque o seguinte no .htaccess

 

 

RewriteEngine OnRewriteRule !.(\.gif|\.jpg|\.css|\.js)$ pagina.php

Onde é uma lista com todos as extensões que serão permitidas no site.

No arquivo pagina.php você recupera a URL acessada e executa a pagina

 

//recupera a url sem o dominio, se voce acessar [url="http://site/meu/teste"]http://site/meu/teste[/url], ele irá retornar '/meu/teste$url  = $_SERVER['REQUEST_URI'];//separa os dados, removendo a '/' do inicio da string$dados = explode('/',substr($url,1));//Recupera os dados$s = $dados[0];$p = $dados[1];

 

Note que isso permite ter uma maior segurança pois impede que determinadas extensões de arquivos sejam acessadas em seu servidor. e toda pagina acessada terá que passar pelo pagina.php, podendo neste arquivo recuperar dados sobre o usuário que está acessando, verificar níveis de acesso, paginas mais acessadas.

 

E realmente, o e-book do Aurelio é muito util quando se trata de Expressões regulares. Mas recomendo comprar o Livro.

 

Espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá ezidi, valeu ai pela ajuda..

 

 

Mas usando está tecnica, que também tem no tutorial do perfect lion, mas neste exemplo que eu postei eu não poderia acrescentar algumas regras a mais para o caso da URL ter 0, 2, 3 4 etc.. variaveis..

 

Tipo:

 

RewriteEngine OnRewriteRule ^\/?([a-zA-Z]+)?\/([a-zA-Z]+)?\/? pagina.php?s=$1&p=$2RewriteRule ^\/?(.+)?\/([a-zA-Z]+)?\/? pagina.php?s=$1

 

 

Só que assim não funciona..

 

 

 

Valeu a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

E aii galera beleza?

 

 

Sou novo aqui no fórum.. já vi que o pessoal aqui ajuda mesmo! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

 

Eu estou com um problema arecido como este ai..

 

No caso eu tenho alguns tipos de URl no site, a unica diferença entre elas são a quantidades de parametros (variaveis) passados..

 

Então queria criar varias regras de escritas.. uma para cada tipo.. ou seja: um regra pra url que tem 1 parametro, outra para 2 parametros.. outra para 3 etc....

 

 

tem jeito?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois que quebrar muito a cabeça consegui uma solução..

 

Vejam se minha idéia é boa:

 

vamos imaginar que em meu site eu tenha 3 tipos de URL, uma com 1 variavel, outra com 2 e outra com 3.

 

Então eu crio 3 regras de escrita para cada uma delas. Assim:

 

 

RewriteRule ^\/?([a-zA-Z]+)?\/([a-zA-Z]+)?\/?\/([a-zA-Z]+)?\/? pagina.php?s=$1&p=$2&v=$3 [QSA,L]RewriteRule ^\/?([a-zA-Z]+)?\/([a-zA-Z]+)?\/? pagina.php?s=$1&p=$2 [QSA,L]RewriteRule ^\/?([a-zA-Z]+)? pagina.php?s=$1 [QSA,L]
Antes não estava dando certo por que tinha colocado o [QSA,L] que até agora não entendo muito bem pra que serve.

 

O que você acham?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se voce prefere assim e esta funcionando... porque não? mas eu acho melhor daquela outra forma... fica mais facil de gerenciar (na minha opinião).Nelly, A solução para seu problema seria resolvida tambem com o algoritmo que postei. Voce pode passar varios parametros pela URL, pois, ao voce dar um explode na URL, todos irão para um vetor, que pode ser manipulado da forma que quizer. Você só terá que saber e controlar a ordem dos parametros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo.. Valeu pela ajuda ai ezidio

 

Queria fazer um agradecimento especial ao INSIDE, pois foi lendo o tutorial no site dele que eu consegui fazer..

 

Valeu a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal,Eu consegui fazer.. porem ao aessar alguma URL amigavel, a pagina erde todos os esilos CSS, Java script.. imagens etc..è como se não encontrasse o caminho..Como poderia resolver isso?Obrigado a todos..

Compartilhar este post


Link para o post
Compartilhar em outros sites

E aí RinaldFN.... e aí galera!

beleza?!

 

Cara... depois de passar 1 dia e meio quebrando a cabeça só nisso, pesquisando em fóruns gringos e tudo mais, descobri uma forma legal de escrever o .htaccess sem interferir nos arquivos (gif|jpg|jpeg|png|swf|js|css).

 

Bom, seguinte: Você pode escrever seu .htaccess da seguinte forma:

 

RewriteEngine on

RewriteCond %{REQUEST_URI} !\.(gif|jpg|jpeg|png|swf|js|css)

RewriteRule ^([a-zA-Z0-9_-]+)? index.php?p=$1 [QSA,L]

 

O que foi feito é que na linha "RewriteCond" eu pedi para que não fosse interferido o uso de arquivos com as extensões (gif|jpg|jpeg|png|swf|js|css)

 

Lembrando que você terá que usar caminho absoluto para as extensões:(gif|jpg|jpeg|png|swf|js|css)

 

Exemplo usando imagem: http://www.seusite.com.br/img/minhaimagem.jpg

 

O mesmo deve ser usado para as outras extensões (gif|jpg|jpeg|png|swf|js|css)

 

 

Bom, é isso!

 

Espero ter ajudado!

 

Grande abraço!

 

Michell Campos

www.functionweb.com.br

michell@functionweb.com.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.