Ir para conteúdo

POWERED BY:

Arquivado

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

BRG

Problemas com Url Amigável / mod_rewrite

Recommended Posts

Olá pessoal! Preciso muito da ajuda de vocês.

Estou desenvolvendo um sistema e nele utilizarei url amigavel e parametros criptografados para enviar dados via GET.

Então criei as seguuintes regras no .htaccess:

 

RewriteRule ^([a-z]+)/?$ ./modulos/$1.php [L]

Então a url que será: www.endereco.com.br/produtos/ chamará a página www.endereco.com.br/modulos/produtos.php

 

RewriteRule ^([a-z]+)/([a-z]+)/?$ ./modulos/$1.$2.php [L]

Nesta a url que será: www.endereco.com.br/produtos/cadastro chamará a página www.endereco.com.br/modulos/produtos.cadastro.php

 

RewriteRule ^([a-z]+)/([a-z]+)/(.*)/?$ ./modulos/$1.$2.php?acao=$3 [L]

Nesta a url que será: www.endereco.com.br/produtos/cadastro/eJyzz0yxNTRUS0wuyczPs01NySxJLAIARBIHBg==/ chamará a página www.endereco.com.br/modulos/produtos.cadastro.php?acao=eJyzz0yxNTRUS0wuyczPs01NySxJLAIARBIHBg==

 

Só para vocês entenderem, nesse parametro criptografado eu envio a acao e o id do registro para edicao.

Pois bem, tudo funciona belezinha, porém, ao incluir esta ultima regra, todas as páginas css, js que estão em diretórios diferentes param de funcionar. Já tentei inserir a url completa mas não rolou.

 

Alguém poderia me ajudar nesta questão, talvez alguma regra de negacao para arquivos js, css..

 

Se puderem me ajudar ficarei imensamente agradecido!

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou usar a seguinte regra abaixo e colocar o caminho completo dos arquivos de CSS e JS ?!

 

RewriteRule !\.(gif|jpg|jpeg|png|css|js|swf|php|xml|ani|cur|icon|doc|docx|pdf)$ index.php [L]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou usar a seguinte regra abaixo e colocar o caminho completo dos arquivos de CSS e JS ?!

 

RewriteRule !\.(gif|jpg|jpeg|png|css|js|swf|php|xml|ani|cur|icon|doc|docx|pdf)$ index.php [L]

Amigo, primeiramente muito obrigado pela resposta.

Tentei usar sim.. também nâo rolou...

Você tem alguma outra sugestão?

 

Ou alguém sugere algo???

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou com o mesmo problema!

 

Erro dado pelo mozilla:

 

"Erro: A folha de estilos http://localhost/testes/2010/noticias/1/site/css/abas.css não foi carregada porque seu tipo MIME, “text/html”, não é “text/css”.

Arquivo-fonte: http://localhost/testes/2010/noticias/1/

 

 

Tentei te tudo um pouco tambem é nada!

 

O que percebi é que o cmainho dos arquivos muda!

 

ex:

 

URL do arquivo JS: http://localhost/testes/2010/site/js/lib/jquery-1.4.2.min.js

 

fica como:

 

URL do arquivo JS: http://localhost/testes/2010/[b}noticias/1[/b]/site/js/lib/jquery-1.4.2.min.js

 

ele adiciona o que estou usando na URL da pagina, neste caso:

sessao: noticias

ID: 1

 

noticias/1

 

O engraçado que ate a priemira condição ele funciona:

 

localhost/testes/noticias

 

exibe a pagina de noticias tranquilamente, depois que adiciona o ID/Titulo para tudo (localhost/teste/noticias/ID/TITULO)

 

 

Porque isso!? Loucura!

 

meu .htaccess

 

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?pg=$1
RewriteRule !\.(gif|jpg|jpeg|png|css|js|swf|php|xml|ani|cur|icon|doc|docx|pdf)$ index.php [L]

 

preciso de ajuda o projeto PAROU!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esperimentem usar o .htaccess abaixo:

 

<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule . /index.php [L]
</IfModule>

Com esse código ele irá ignorar os arquivos que realmente existam no servidor, como folhas de estilo, imagens e javascript, chamando o arquivo index.php apenas se o que foi requisitado não existir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esperimentem usar o .htaccess abaixo:

 

<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule . /index.php [L]
</IfModule>

Com esse código ele irá ignorar os arquivos que realmente existam no servidor, como folhas de estilo, imagens e javascript, chamando o arquivo index.php apenas se o que foi requisitado não existir.

 

Leozitho, obrigado pela ajuda...

Mas essas regras não solucionaram meu problema.

O meu .htaccess está assim:

 

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([a-z]+)/?$ ./modulos/$1.php [L]

RewriteRule ^([a-z]+)/([a-z]+)/?$ ./modulos/$1.$2.php [L]

RewriteRule ^([a-z]+)/([a-z]+)/(.*)/?$ ./modulos/$1.$2.php?acao=$3 [L]

</IfModule>

 

A ultima regra que gera o problema, as duas primeiras funcionam normalmente!

Estou 2 dias atrasado no cronograma por causa disso.. não sei o que fazer....

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por que você não usa o .htaccess como eu te passei e faz o controle de qual arquivo deve ser acessado na pasta "modulos" através do arquivo index.php?

 

Neste caso o index.php seria o controlador e você não precisaria fazer o controle de qual arquivo deve ser acessado através do .htaccess.

 

Ao meu ver, dessa forma como eu disse seria mais fácil e assim que costumo utilizar em meus projetos.

 

Um abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leozitho

 

usando seu .htaccess meus links

/noticias

/eventos

/qualquercoisa

 

nao funcionao e ele agora chama a raiz do servidor.

 

no meu antigo estava assim:

 

RewriteRule ^(.*)$ index.php?pg=$1

 

como voce pega as informações /noticias/ID/Titulo pelo seu .htaccess ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

como voce pega as informações /noticias/ID/Titulo pelo seu .htaccess ?

 

Pra pegar as informações é só usar a função explode.

 

Você pode fazer algo assim:

 

$requisicao = $_SERVER['REQUEST_URI'];
$requisicao = explode('?', $requisicao);
$requisicao = reset($requisicao);
$requisicao = explode('/', $requisicao);

$parte1 = array_key_exists(1, $requisicao) ? $requisicao[1] : '';
$parte2 = array_key_exists(2, $requisicao) ? $requisicao[2] : '';
$parte3 = array_key_exists(3, $requisicao) ? $requisicao[3] : '';
$parte4 = array_key_exists(4, $requisicao) ? $requisicao[4] : '';
$parte5 = array_key_exists(5, $requisicao) ? $requisicao[5] : '';

 

É só uma sugestão. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use caminhos ABSOLUTOS para CSS, JS e imagens que tudo ficará bem...

 

Boa tarde Rick!

eu já deixei os caminhos absolutos. Porém quanto insiro a terceira regra deixa de funcionar:

RewriteRule ^([a-z]+)/([a-z]+)/(.*)/?$ ./modulos/$1.$2.php?acao=$3 [L]

 

o caminho dos arquivos passam a ter o /modulos/, o que não poderia acontecer.

 

A sugestão do Leozitho de tratar tudo na index não rola agora pois estou no fim do sistema, seria inviavel mexer nisso agora.

 

Alguem mais sugere algo?

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu leozitho eu uso o explode, como nao funcionou com sua .htaccess aqui pensei em algo diferente + beleza.

 

Rick valeu, coloquei tudo em link absoluto e funcionou.

Trabalho da POHA rs mais fluiu bem.

 

Pinguim estou tentando pensar em algo para te ajudar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tava olhando o .htaccess do CodeIgniter aqui e tem uma regra assim:

 

RewriteCond $1 !^(index\.php|img|css|js|robots\.txt)

 

Esta regra serve para ignorar os arquivos "index.php" e "robots.txt" e as pastas "img", "css" e "js".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tava olhando o .htaccess do CodeIgniter aqui e tem uma regra assim:

 

RewriteCond $1 !^(index\.php|img|css|js|robots\.txt)

 

Esta regra serve para ignorar os arquivos "index.php" e "robots.txt" e as pastas "img", "css" e "js".

 

Léo!

Testei esta condição também, mas infelismente isso ainda nao foi a solucao :/

O problema persiste.

 

Estou procurando alguma solução e também aguardando algumas sugestoes. Se tiver algo ai, por favor, poste aqui...

 

abraço!

 

mais alguem pode me ajudar???

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.