Ir para conteúdo

POWERED BY:

Arquivado

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

Billie_Joe

regras para mod_rewrite

Recommended Posts

Boa tarde galera,

 

 

Estive começando a mexer com esse negócio de mod_rewrite em janeiro mas acabei tendo que parar para tocar outras coisas. Agora o projeto voltou e preciso fazer funcionar.

 

Estou esbarrando em algo que deve ser muito estúpido. A idéia é o visitante entrar na página "artigos" e depois em uma página "notícia". Criei as seguintes regras

 

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-f

RewriteCond %{SCRIPT_FILENAME} !-d

RewriteRule ^artigos artigos.php [L]

RewriteRule ^noticia([0-9]+)\/([A-Za-z-]+)$ noticia.php?cod=$1&titulo=$2 [L]

 

Explicando o que tentei fazer:

 

a 4a. linha foi criada para apenas subsituir mesmo a url, sem passar variável alguma. Assim digito www.meusite.com/artigos e vai pra página artigos.php. Está funcionadno

a 5a. linha foi criada para maquear a url e colocar o codigo e o titulo diretamente nela.

 

Problemas??

 

1 - se eu entro www.meusite.com/artigos vai ok. porém se eu digito www.meusite.com/artigos/ ele perde o CSS, jpgs, gifs e outros objetos

2 - se eu clico em www.meusite.com/noticia/12/titulo+da+noticia ele entra na página, porém perde o CSS, jpgs, gifs, e no menu principal ele altera o link q apontava para www.meusite.com/artigos , fazendo apontá-lo agora para www.meusite.com/noticia/12/artigos

 

Alguma sugestão de alteração? Dica de leitura?

 

Obrigado a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só pra ajudar a ficar intrigante (eu já rodei tudoq foi site e não entendi). Se eu incluir a regra

 

 

RewriteRule ^noticia([0-9]+)-([A-Za-z-]+)$ noticia.php?cod=$1&titulo=$2 [L]

 

 

e entrar num link www.meusite.com/noticia-12-titulo+da+noticia tudo funciona 100%

 

 

a questão é que quero utilizar a barra comum como separadora :-(

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma coisa é certa para metade de seus problemas: em caminhos de javascript, css, images e etc você deve informar o caminho completo, que não deve estar sendo feito atualmente. Isto é uma das boas práticas de desenvolvimento.

 

Eu normalmente tenho um arquivo base onde tenho uma constante que possui a url básica, e onde eu for utilizar concateno esta com as outras que preciso no momento, por exemplo:

 

<?php echo BASE_URL; ?>/js/script.js

Outra tentativa é usar a tag base no <head> do documento HTML.

 

Para o problema da barra no final, você precisa incluir na sua expressão regular se ela pode ou não existir, fica assim:

 

RewriteRule ^noticia/([0-9]+)/([A-Za-z-]+)/?$ noticia.php?cod=$1&titulo=$2 [L]

PS. não precisa escapar as barras. ;)

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, vamos por partes....

 

1 - se eu coloco o caminho completo dos arquivos css, js e jpgs / gifs funciona sim, porém o problema do link do meu continua. Lembrando - ele deveria apontar para www.meusite.com/artigos porém aponta para www.meusite.com/noticia/12/artigos - parece q ele se confude, achando q as barras indicam diretório e vira uma zona.

 

2 - se eu utilizo hifen (-) como separador ao invés de barra (/), ele funciona 100%, e nem preciso incluir o caminho completo.

 

 

Eu queria evitar esse processo de incluir o caminho completo. vai dar muito trabalho e não vai se adequar com a ferramenta de publicação q eu utilizo. Imagina eu ter q colocar em cada <img src> o caminho completo da imagem!!

 

Abraço!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

RewriteRule ^artigos/?$ artigos.php [L]

A questão do hífen, eu quero saber se com as barras funcionaram, com caminhos completos ou não.

 

Para esta questão do caminho, use a tag <base> como eu sugeri no primeiro post e ainda passei o link com mais detalhes.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Paulo, te mandei por mp um link pra você testar. Infelizmente não posso colocar aqui pois ainda está numa fase bem inicial o projeto. Dê uma olhada lá e depois postamos os resultados aqui ok?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente subistituir a linha:

RewriteRule ^artigos artigos.php [L]
por:

RewriteRule !\.(gif|jpg|png|css|swf|js)$ artigos.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, não funcionou também....

 

Só pra esclarecer, o problema não é na regra da página "artigos" q já está certinha. O problema é na página "noticia". E pra melhor visualização, a página "noticia" é como se fosse uma página "filha" da página "artigos" (não sei como explicar melhor hehe). Imagina q na "artigos" você tem um monte de artigos e na noticia você quer ler uma delas. Pronto! :P

 

Se eu coloco com separador BARRA não vai (perde o css, gif, jpg, tudo), sem contar q muda o menu para www.meusite.com/noticia/12/artigo quando o certo seria www.meusite.com/artigo apenas.

 

Porém se eu utilizo a regra com o separador TRAÇO vai tudo perfeitamente bem.

 

Novamente, posto as regras até agora:

 

#Liga o mecanismo de reescrita (mod_rewrite)

RewriteEngine On

RewriteBase /meusite

RewriteCond %{SCRIPT_FILENAME} !-f

RewriteCond %{SCRIPT_FILENAME} !-d

RewriteRule ^artigos/?$ artigos.php [L]

RewriteRule ^noticia/([0-9]+)/([A-Za-z-]+)/?$ noticia.php?id=$1&nome=$2 [L]

RewriteRule ^noticia-([0-9]+)-([A-Za-z-]+)/?$ noticia.php?id=$1&nome=$2 [L]

 

 

 

Obrigado a todos!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

nunca perdi tanto tempo tentando resolver um problema no desenvolvimento de um site como com esse viu! :huh:

 

alguma alma iluminada por favor, pronucie-se!!! Já tentei 8745983745 regras diferentes no .htaccess e até agora nada!

 

O q eu estou achando mais estranho é que utilizando HIFEN ele vai de boa, sem precisar de <base> nem nada. Utilizando a BARRA ele fica perdidão, parece q ele acha q está em um ou dois niveis de diretório acima.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Paulo, sabe pq não quero usar links absolutos? pq eu vou utilizar aquelas janelas de editor de html pra montar alguns textos dinâmicos. Ai vou publicar uma imagem no meio do texto. Essa imagem vai ter apenas um link relativo (q vai para dentro do diretório onde gravo as imagens).

 

Outro motivo é que tem um site - www.nymag.com - que utiliza o mesmo esquema de reescrita de urls (ou parecido) sem precisar usar links absolutos.

 

Será q tem como ler o .htaccess de outro servidor?.rs.rs.rs.rs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, coloquei num link temporário um teste pra elucidar o problema. Vamos lá:

 

http://www.noiteafora.com.br/teste/

 

-> a página index.php - beleza, funcionando ok

-> a página artigos.php - beleza... se você entrar com www.noiteafora.com.br/teste/artigos vai tranquilamente

-> dentro dessa página (artigos), clique em qq um dos links. Olhe o resultado na próxima, tanto na perda do css como nos links do menu.

-> o q me intriga - se eu utilizo www.noiteafora.com.br/teste/artigo-12-tarsogenro ele funciona 100% correto

 

O código do .htaccess:

 

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-f

RewriteCond %{SCRIPT_FILENAME} !-d

RewriteRule ^artigos/?$ artigo.php [L]

RewriteRule ^artigo/([0-9]+)/([A-Za-z-]+)/?$ artigo.php?id=$1&nome=$2 [L]

RewriteRule ^artigo-([0-9]+)-([A-Za-z-]+)/?$ artigo.php?id=$1&nome=$2 [L]

 

 

se alguém tiver uma luz eu acendo uma vela http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

georgewar

 

Sei que a intenção foi boa mas este tópico é de 2008

 

Se deseja realmente ajudar o fórum responda em tópicos recentes onde os usuários ainda precisam da resposta

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.