Ir para conteúdo

POWERED BY:

Arquivado

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

ro.fonseca

.htaccess e url amigaveis

Recommended Posts

e ae galera,

 

Então sou iniciante em url amigaveis e venho apanhando muito, já pesquisei muito no google e nao consegui tirar a minha duvida, eu quero "redirecionar" minha pagina.

 

Minha pag:

www.meusite.com.br/index.php?pag=cadastro

Para:

www.meusite.com.br/cadastro

 

Meu .htaccess está assim:

RewriteEngine on

RewriteRule ^([a-zA-Z])$ index.php?pag=$1

 

Meu href está dessa maneira:

href="index.php?pag=cadastro"

 

 

A pagina tá dinamica, no index eu chamo várias outras paginas pelo esquema do href citado acima, o que fazer para que esse .htaccess funcione?? Eu já tentei e pesquisei e nao encontro nenhuma soluçao, alguem pode me dar uma luz????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apache?

Se for o modulo de reescrita está atiavado?

Você setou AllowOverride para All?

 

Entre no httpd.conf (aqui fica em /etc/httpd/conf/httpd.conf

 

Procure por

LoadModule rewrite_module modules/mod_rewrite.so

Se estiver comentado (#), descomente.

 

Depois procure por "AllowOverride None" e troque para "AllowOverride All" (o meu se encontra +- na linha 340) - lembrando que você pode encontrar vários, procure por um que estiver com a tag Directory setado para o root do "localhost" (aki é: <Directory "/var/www/html">..

 

 

 

Link util: http://blog.thiagobelem.net/tutoriais/aprendendo-urls-amigaveis/

Compartilhar este post


Link para o post
Compartilhar em outros sites

O meu está assim:

 

LoadModule rewrite_module modules/mod_rewrite.so

 

<Directory />
   Options FollowSymLinks
   AllowOverride All
   Order deny,allow
   Deny from all
</Directory>

 

DocumentRoot "c:/wamp/www/"

 

Eu uso o WAMP e é o Apache sim, a principio eu acho que o .htaccess esteja funcionando, até pq algumas vezes modificando ele eu quebrei a css, mas até agora nada de deixar o link como eu quero, eu realmente pesquisei um bocado e até agora nada, vou dar uma lida nesse site que tu me mandou, mas de primeira vista eu acho q já li!

 

editado - Dei uma lida nesse blog, não tinha visto antes, muito bom por sinal, mas acho q meu codigo já está certo, mas não está pegando de jeito nenhum, eu uso WAMP e aqui novamente estão meus codigos:"

 

O ".htaccess":

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule ^\/?([a-zA-Z])\/?$ /index.php?pag=$1 [NC,L]
</IfModule>

 

 

HTML:

<li><a href="<?="index.php?pag=inicio";?>" title="">Início</a></li>

 

E como eu quero que o link saia:

www.meusite.com.br/inicio

 

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

para não ter o redirecionamento, modifique o href, para:

<li><a href="inicio" title="">Início</a></li>

Compartilhar este post


Link para o post
Compartilhar em outros sites

para não ter o redirecionamento, modifique o href, para:

<li><a href="inicio" title="">Início</a></li>

 

Para não ter? Eu quero ter, de qualquer maneira vlw pela dica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tá usando a index, para gerenciar todas as requisições:

index.php?pag=inicio

 

se você fizer um redirecionamento para:

inicio

 

com este htaccess:

index.php?pag=$1

 

você vai ter um redirecionamento infinito, a index mandando pra index, que recebe e manda pra index, e...

 

index.php


<a href="inicio">Inicio</a>
<a href="contato">Contato</a>
<?php


echo '<pre>';
var_dump( $_GET );


 

.htaccess

RewriteEngine on
RewriteRule ^([a-zA-Z]+)$ index.php?pag=$1

 

saída:

array(1) {
 ["pag"]=>
 string(6) "inicio"
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem certas coisas que acontecem comigo que até Deus duvida...

 

meu .htaccess ficou assim:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^([a-zA-Z]+)$ index.php?pag=$1
</IfModule>

 

o Html:

 
<li><a href="inicio" title="">Início</a></li>
<li><a href="cadastro" title="">Cadastre-se</a></li>

 

 

Dae pra pagina ficar dinamica eu utilizo o swtich:

case 'inicio':
$title = "Meu Site";
$include_conteudo = "anuncios.php";
break;
case 'cadastro':
$title = "Meu Site";
$include_conteudo = "anuncios.php";	
break;

 

 

A URL de Incio sai assim:(COMO DEVE SAIR)

http://localhost/MeuSite/inicio

 

Já a URL da parte cadastro sai assim:

http://localhost/MeuSite/cadastro/?pag=cadastro

 

Dae eu fico pensando, de onde saiu esse:

?pag=cadastro

 

???? Não entendi.

 

 

No mais, vlw pela ajuda até agora, já consegui q pelo menos a parte de inicio saia como eu quero que saia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eita, verifica se nao tem um link para esse endereço em outro lugar, talvez no arquivo anuncio.php.

 

Pior que nem tem..

 

Só uma duvida. Se o RewriteRule reescreve a url, não era pro meu href ser assim:

<li><a href="index.php?pag=inicio" title="">Início</a></li>

 

ao inves de ser assim:

<li><a href="inicio" title="">Início</a></li>

 

 

Editei o meu htaccess para testar se ele tava funcionando e deixei assim:

RewriteRule ^\/?([a-zA-Z]+)\/?$ index.php?[b]hgjhg[/b]=$1

 

Resumindo, o htacess nao está funcionando e ele continua chamando a URL do mesmo jeito:

http://localhost/0bits/inicio

 

tem alguma coisa errada, mas acho q esse .htaccess nao te funcionando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não.

 

ele reescreve pro servidor entender, e não o contrário.

 

o teu href é : href="inicio"

ai o htaccess, traduz para: href="?pag=inicio"

 

por causa da regra.

está redirecionando 2 vezes, como se fosse uma pasta, por isso o segundo $1/?pag=$1

Compartilhar este post


Link para o post
Compartilhar em outros sites

não.

 

ele reescreve pro servidor entender, e não o contrário.

 

o teu href é : href="inicio"

ai o htaccess, traduz para: href="?pag=inicio"

 

por causa da regra.

está redirecionando 2 vezes, como se fosse uma pasta, por isso o segundo $1/?pag=$1

 

essa regra?

 

RewriteRule ^([a-zA-Z]+)$ index.php?pag=$1

 

Pela minha logica como tu explicou ele vai pegar a expressao regular do .htaccess e comparar com a string do href e verificar se a regra é aceita, no caso se no href="inicio" ela é aceita, entao ela vai ser capturada transformada pro servidor em "index.php?pag=inicio" e mostra a URL www.meusite.com.br/inicio. Correto essa logica?

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.