RinaldFN 0 Denunciar post Postado Maio 8, 2007 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
ezidio 0 Denunciar post Postado Maio 8, 2007 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
Guilherme Rambo 4 Denunciar post Postado Maio 8, 2007 http://www.web2ponto0.com.br/aprenda-expressoes-regulares http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif []'s Compartilhar este post Link para o post Compartilhar em outros sites
RinaldFN 0 Denunciar post Postado Maio 8, 2007 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
ezidio 0 Denunciar post Postado Maio 8, 2007 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
RinaldFN 0 Denunciar post Postado Maio 8, 2007 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
Nelly 0 Denunciar post Postado Maio 9, 2007 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
RinaldFN 0 Denunciar post Postado Maio 9, 2007 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
ezidio 0 Denunciar post Postado Maio 9, 2007 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
RinaldFN 0 Denunciar post Postado Maio 9, 2007 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
RinaldFN 0 Denunciar post Postado Maio 15, 2007 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
Michell Campos 0 Denunciar post Postado Junho 28, 2009 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