Ir para conteúdo

Arquivado

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

Perfect Lion

URLs amigáveis

Recommended Posts

Fala galera tudo certo?

 

Bem para quem não conhece esse conceito irei dar uma explicadinha aqui.

 

O que são URLs amigáveis?

São urls fáceis de se decorar e tbm algo mais legível para um bot de sistema de busca..

ex: de url amigável

 

http://www.seusite.com.br/artigos/show/33/php100erro.html

http://www.seusite.com.br/artigos/list/10/12/2005/all/php

 

Bem no 1° caso iríamos acessar o artigo e mostrar o conteúdo do artigo do id 33 e no 2° caso iríamos listar todos os artigos da seção PHP

 

Agora me fala uma coisa essas urls não são muito mais fácil de se ler do que isso:

 

 

http://www.seusite.com.br/?se=artigos&...=show&id=33

http://www.seusite.com.br/?se=artigos&...l&categ=php

 

Veja que isso fica cheio de coisas que para o usuário não é interessante.. e tbm complica a vida para se decorar algo assim.. fora que nos bot de buscadores isso para eles não é nada. Porque não é nada. nessa url ai ele interpreta como nada... já nos caso da URLs amigáveis é outra história..

 

No caso das URLs amigáveis ele vai ler parte por parte da sua url e fazendo assim um mapeamento de palavras chave então se você tem lá /artigos/ ele sabe que existe uma pasta em seu servidor que é referente artigos então na hora de encontrar algo sobre artigos no sistema dele ele vai dar mais relevância a sua pagina por conter uma pasta que pode haver o que você quer dentro dele.. Mais eu já vou avisando que não é só isso que faz seu site ficar entre os primeiros links há outras coisas por traz como por exemplo usar WebStandards que são a maneira correta de se usar as tags do HTML para se criar uma pagina

 

Bem chega de filosofia e bora a pratica :P/>

 

O que temos que fazer para ter essas urls amigáveis?

Antes de tudo vamos lembrar que isso só funciona com servidores APACHE ok?

 

Antes de mais nada verifique se no "httpd.conf" do APACHE o "mod_rewrite.so" sem espaços está habilitado ele provavelmente está assim:

 

#LoadModule rewrite_module modules/mod_rewrite.so

 

Se tiver descomente ele tirando o (#) da frente salve o arquivo e restarta o APACHE para que ele reconheça esse modulo

 

Bem para podermos criar essas URLs amigáveis temos que configurar a pasta onde queremos que nela se tenha essas urls achegáveis.. então iremos configurar um ".htaccess" sem (") nele temos que colocar o seguinte:

 

# << URLs Amigaveis

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule .(/)?$ /html/seuuser/www/index.php

</IfModule>

# >> URLs Amigaveis

Vamos explicar o que está acontecendo aqui:

 

* Comentário

# << URLs Amigaveis

* verifica se o modulo rewrite está habilitado se sim executa o bloco dentro

<IfModule mod_rewrite.c>

* habilita o modulo Rewrite

RewriteEngine On

* Indica qual é a pasta base de todo o conteudo

RewriteBase /

* Verifica se a url digitada é um arquivo caso seja para aqui

RewriteCond %{REQUEST_FILENAME} !-f

* Verifica se a url digitada é uma pasta caso seja para aqui

RewriteCond %{REQUEST_FILENAME} !-d

* Mostra o caminho completo do meu arquivo index.php que caso nenhum desses comandos assim seja valido vai para ele.

RewriteRule .(/)?$ /html/seuuser/www/index.php

* fecha verificador

</IfModule>

* comentário

# >> URLs Amigaveis

Bem até ai tudo certo Ok?

Agora Salve o arquivo lembrando que onde você jogar essa arquivo todas as pastas depois dele terão essas configuração...

 

Bem crio o seu index.php e nele coloque algo como "Estou Na HOME"

 

Agora vamos testar para ver se está funcionando. Abre o seu navegador e teste colocando o seguinte.:

 

http://www.seusite.com.br/

 

Vai mostrar Estou Na HOME

 

agora digite

 

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

 

Vai mostrar Estou Na HOME

 

então já está funcionando.. a e lembrando que se existi-se essa pasta teste em seu servidor ele iria acessar a pasta normalmente sem problema algum ;)/>

 

Agora como podemos trabalhar com essas urls amigáveis? agora é no index.php que o negocio vai começar a ter vida.

 

Abra o index.php e vamos programar nele o seguinte.

 

<?php

#:: URL amigaveis

$gets = explode("/",str_replace(strrchr($_SERVER["REQUEST_URI"], "?"), "", $_SERVER["REQUEST_URI"]));

?>

O que temos ai?

Nessa linha ele está recuperando um array do conteudo depois do http://www.site.com.br/->aqui então imagina que você digito...

 

http://www.seusite.com.br/teste/meu

 

ele vai retorna um array assim

 

array(

"",

"teste",

"meu"

)

Então você já tem todas as partes da url certo então vamos dizer que essa url abaixo acessa a seção artigos

 

http://www.seusite.com.br/artigos

 

quem ver essa url pensa que é uma pasta artigos que há em seu servidor mais na verdade não é claro que se haver uma pasta artigos ele irá entrar na pasta

 

Quando recuperamos isso termos o seguinte:

 

array(

"",

"artigos"

)

Então vamos dizer que temos o arquivo chamado artigos em nosso servidor dentro da pasta includes/ e ele é responsável pela configuração da sessão artigos como funções métodos dentre outras coisas.

 

ai faríamos o seguinte:

 

<?php

#:: URL amigaveis

$gets = explode("/",str_replace(strrchr($_SERVER["REQUEST_URI"], "?"), "", $_SERVER["REQUEST_URI"]));

#:: Elimita o 1° tem da array que no nosso caso é sempre vazio

array_shift($gets);

if(file_exists("includes/adm." . $get[0] . ".php")){

require ("includes/adm." . $get[0] . ".php");

}else{

echo "você ESTÁ NA HOME";

}

?>

E o que aconteceu?

ao acessar o http://www.seusite.com.br/artigos se existir a pasta ele entra na pasta caso não exista a pasta ele vai executar o script index.php e vai verificar se esse arquivo artigos existe dentro da pasta includes/ no seu servidor se sim ele vai incluir ele ;)/>

 

Sako?

 

Bem está ai prontinho e funfando ^^ a e quanto ao método $_GET e $_POST continuam funcionando normal

 

Atenção:

Há uma desvantagem em usar URLs amigáveis você tem que em todos os links colocar o cominho completo para ele ex: você tem um menu e nele tem os seguinte links

 

/categorias

/php

 

se você tentar acessar assim ele não vai acessar pois imagina que você esteja no link http://www.site.com.br/minhavo/com/voce

 

quando você tentar acessar esses links acima ele vai fazer isso:

 

http://www.site.com.br/minhavo/com/voce/categorias

http://www.site.com.br/minhavo/com/voce/php

 

Então você viu que num rola ;)/> para funcionar você tem que colocar o link todo

 

http://www.site.com.br/categorias

http://www.site.com.br/php ;)/>

 

Bem é isso ai até mais galera

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa aqui eu consigo criar pelo bloco de notas..Tenta mudar a codificação

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz assim..clica em salvar como...depois no rodapé há 3 campos Nome do arquivo:Salvar como tipo:Codificação:No Salvar como tipo coloca "Todos os arquivos" e ai sim você coloca o nome .htaccess e manda salvar ..caso nao deixe salvar muda a codificação para algum ai.. para ver se ele livera mais num sei não ^^ :P/> pois o caso acima é o certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo sobre a questão do

se você tentar acessar assim ele não vai acessar pois imagina que você esteja no link http://www.site.com.br/minhavo/com/vocequando você tentar acessar esses links acima ele vai fazer isso:http://www.site.com.br/minhavo/com/voce/categoriashttp://www.site.com.br/minhavo/com/voce/phpEntão você viu que num rola wink.gif para funcionar você tem que colocar o link todohttp://www.site.com.br/categoriashttp://www.site.com.br/php wink.gif

basta fazer o seguinte, no final do RewriteRule coloca um [QSA,L] no final... exemplo:

RewriteRule ^([^/]*)\/?$ /index.php?opc=$1 [QSA,L]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais ai você teria que criar um para cada sessão isso ai.. e eu queria eliminar isso saka? fazer um sem ter que ficar colocando mais isso ai

Compartilhar este post


Link para o post
Compartilhar em outros sites

ow kra, aki funcionou, soh q tipowse eu uso soh www.site.com.br/dicas ele vai normal, mais se eu coloko assim: www.site.com.br/dicas/ ele perde o CSS, os Javascripts, e as imagenssabe pq??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi o que eu disse .. você tem que colocar o link completo =). ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

lion, outra pergunta... essa parte RewriteRule .(/)?$ /html/seuuser/www/index.php você disse que é o caminho que esta o arquivo index, certo? eu coloco o endereço e naum funcionano meu caso ta assim :C:\Apache\htdocs\teste2\index.php ◄ ta errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta uma dessas:

 

RewriteRule .(/)?$ /htdocs/teste2/index.phpRewriteRule .(/)?$ C:\Apache\htdocs\teste2\index.phpRewriteRule .(/)?$ C:\\Apache\\htdocs\\teste2\\index.phpRewriteRule .(/)?$ C:/Apache/htdocs/teste2/index.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

rapaz ta dificil, agora apareceu outro erro:Internal Server ErrorThe server encountered an internal error or misconfiguration and was unable to complete your request.Erro 500-----------------------------------------------------JÁ RESOLVIR--VALEU!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfect Lion, só uma duvida!

se eu quizer passar o valor de alguma variável pela url eu preciso modifcar alguma coisa nesse arquivo .htaccess que você postou ai?

 

edit

-----

agora eu intendi!!!!

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.