URL Amigáveis

Enviada por Diego 
Diego
URL Amigáveis
08 de April de 2011 às 05:18PM
Eai galera, to a 2 dias procurando como aplica url amigavel em um site meu e não consigo de jeito nenhum,
eu to achando que eu so muito burro, pq todo mundo diz que é muito facil, alguem poderia me ajudar?

os meus links são

www.meusite.com.br/index.php queria que ficasse www.meusite.com.br/index/
e
www.meusite.com.br/noticias.php?id=5 queria que ficasse www.meusite.com.br/noticias/5/

eu ja tentei de tudo quanto é forma, n consigo fazer funcionar :/
alguem me ajuda por favor :P
vlww, abraço
Lucas Tiago de Moraes
Re: URL Amigáveis
08 de April de 2011 às 06:01PM
Amigo com uma googada você consegui resolver seu problema:
http://www.google.com.br/search?sourceid=chrome&client=ubuntu&channel=cs&ie=UTF-8&q=url+amigavel+em+php

Falou.
Diego
Re: URL Amigáveis
08 de April de 2011 às 06:06PM
cara
eu ja entrei em no minimo 50 sites que achei no google só hj tentando fazer e não consegui...
eu não consigo adaptar os codigos a o que eu quero =/
BOZO
Re: URL Amigáveis
08 de April de 2011 às 06:12PM
http://phpbrasil.com/faq/VsECvCOheTaI/url
Diego
Re: URL Amigáveis
08 de April de 2011 às 06:14PM
ja tinha visto esse link e não tenho nem ideia de como aplicar esse código.
Diego
Re: URL Amigáveis
08 de April de 2011 às 06:17PM
eu quero aplicar esse codigo em algumas paginas,

index.php
noticias.php
noticias.php?id=5
contato.php
Lucas Tiago de Moraes
Re: URL Amigáveis
08 de April de 2011 às 06:27PM
é facil

primeiro crie um arquivo com o nome ".htaccess"
depois coloque esse codigo nele:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.pl?get=$1 [L,QSA]
</IfModule>

depois crie o arquivo index.php

no arquivo index.php vc tem que usar o explode para separar as get, então faça isso:

<?php
$get = $_GET['get'];

// pegar o caminho
$path = realpath(dirname(__FILE__));

// verificar a get
if($get != ''){

$dados = explode('/', $get);

// define o caminho e o nome do arquivo
$arquivo = $path . '/' . $get[0] . '.php';

// verificar se o arquivo existe
if(file_exists($arquivo) == false){
// pagina de erro
include $path . '/erro404.php';
}else{
include $arquivo;
}

}else{
include $path . '/home.php';
}

?>


crie mais dois arquivo "home.php" e "erro404.php"

home.php vai ser o index da pagina e erro404.php vai ser a pagina de erro.

amigo para aprender tem que fuçar

Falou.
Diego
Re: URL Amigáveis
08 de April de 2011 às 06:31PM
n tem algum modo de fazer isso só com .htaccess ??
sem usar esses comandos php?

porque nao quero usar esse esquema de index.php?pag=home
isso ja me deu muita dor de cabeça...
Diego
Re: URL Amigáveis
08 de April de 2011 às 06:40PM
Diego Escreveu:
-------------------------------------------------------
> n tem algum modo de fazer isso só com .htaccess
> ??
> sem usar esses comandos php?
>
> porque nao quero usar esse esquema de
> index.php?pag=home
> isso ja me deu muita dor de cabeça...

completando, o unico cógido que funcionou em partes foi esse aqui

<ifModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^index(.*)$ index.php
RewriteRule ^portfolio(.*)$ portfolio.php
RewriteRule ^servicos(.*)$ servicos.php
RewriteRule ^contato(.*)$ contato.php
</ifModule>

queria saber como ficaria os links pras paginas e pq da erro nas imagens do site??
obrigado
Lucas Tiago de Moraes
Re: URL Amigáveis
08 de April de 2011 às 07:16PM
Amigo a maioria usa assim, não tenta inventar, porque você vai estar arrumando corda para se enforcar!

Falou.
Diego
Re: URL Amigáveis
08 de April de 2011 às 10:13PM
realmente tentei implementar o teu codigo lucas mas n funcionou.
se tu tivesse como dar 1 exemplo que eu entendesse, esse exemplo ai n consigo entender pra aplicar ele no meu codigo.
Lucas Tiago de Moraes
Re: URL Amigáveis
09 de April de 2011 às 05:51AM
o amigo desculpa mas errei em um codigo, coloque isso no arquivo .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?get=$1 [L,QSA]
</IfModule>

eu coloquei .pl e era para ser .php

é que eu copiei de um artigo Perl que eu fiz no vivaolinux:
http://www.vivaolinux.com.br/artigo/URL-amigavel-com-Perl/

leia que var ser bom para vc entender

sobre o meu script esta funcionando normal.

falou
Diego
Re: URL Amigáveis
09 de April de 2011 às 01:37PM
pelo que eu entendi esse codigo vai funcionar pra pagina index.php correto??

gostaria de saber como ficariam os links do meu menu para as outras paginas e como seria o codigo das outras paginas??

meu meu está assim

<a href="index.php">Index</a><br>
<a href="servicos.php">Serviços</a><br>
<a href="contato.php">Contato</a><br>


obrigado
Lucas Tiago de Moraes
Re: URL Amigáveis
09 de April de 2011 às 02:18PM
ficaria assim:

<a href="/">Index</a><br />
<a href="/servicos">Serviços</a><br />
<a href="/contato">Contato</a><br />

nunca esqueça de colocar a barra no inicio

exemplo, para pagina servicos.php voce coloc assim /servicos.

Falou.
Diego
Re: URL Amigáveis
09 de April de 2011 às 06:01PM
cara coloquei o codigo, e funciona só no index, nas outras da erro na linha 13 que é a linha
include $path . '/erro404.php';

<?php
$get = $_GET['get'];
// pegar o caminho
$path = realpath(dirname(__FILE__));
// verificar a get
if($get != ''){
$dados = explode('/', $get);
// define o caminho e o nome do arquivo
$arquivo = $path . '/' . $get[0] . '.php';
// verificar se o arquivo existe
if(file_exists($arquivo) == false){
// pagina de erro
include $path . '/erro404.php';
}else{
include $arquivo;
}
}else{
include $path . '/servicos.php';
}
?>
Lucas Tiago de Moraes
Re: URL Amigáveis
09 de April de 2011 às 07:25PM
vc criou o arquivo erro404.php?

primeiro o script testa para ver se o arquivo existe, se não existe envia para o arquivo erro404.php, por isso é essencial criar o arquivo erro404.php.

Falou.
Diego
Re: URL Amigáveis
09 de April de 2011 às 07:35PM
criei o arquivo, mas a unica pagina que funciona é o index, as outras da como se nao existisse
Lucas Tiago de Moraes
Re: URL Amigáveis
09 de April de 2011 às 07:59PM
todos os arquivos estão no mesmo diretorio?

poste o a url do seu projeto?

Falou.
Diego
Re: URL Amigáveis
09 de April de 2011 às 08:03PM
ele está no meu localhost, e sim
todos arquivos estão no msm diretório

são 3 arquivos

index.php (que tem include do topo.php)
servicos.php (que tem include do topo.php)
contato.php (que tem include do topo.php)
Lucas Tiago de Moraes
Re: URL Amigáveis
09 de April de 2011 às 08:28PM
então tira o include topo.php dos arquivos e coloca no index.php, assim:

<?php
$get = $_GET['get'];
// pegar o caminho
$path = realpath(dirname(__FILE__));
// verificar a get
if($get != ''){
$dados = explode('/', $get);
// define o caminho e o nome do arquivo
$arquivo = $path . '/' . $get[0] . '.php';
// verificar se o arquivo existe
if(file_exists($arquivo) == false){
// pagina de erro
include $path . '/erro404.php';
}else{
include $arquivo;
}
}else{
include $path . '/topo.php';
include $path . '/servicos.php';
}
?>

mas amigo eu sei muito bem o que esta acontecendo, mod_rewrite do apache não esta habilitado.
Diego
Re: URL Amigáveis
09 de April de 2011 às 08:30PM
está habilitado sim...
ja funcionou meia boca com outro script de url amigavel

só me explica em cada pagina eu coloco 1 codigo diferente é isso?

servicos.php
coloco o include $path . '/servicos.php';

index.php
coloco o include $path . '/home.php';

contato.php
coloco o include $path . '/contato.php';
Lucas Tiago de Moraes
Re: URL Amigáveis
09 de April de 2011 às 08:58PM
sim, faz isso:

index.php
<?php
$get = $_GET['get'];
// pegar o caminho
$path = realpath(dirname(__FILE__));
// verificar a get
if($get != ''){
$dados = explode('/', $get);
// define o caminho e o nome do arquivo
$arquivo = $path . '/' . $get[0] . '.php';
// verificar se o arquivo existe
if(file_exists($arquivo) == false){
// pagina de erro
include $path . '/erro404.php';
}else{
include $arquivo;
}
}else{
include $path . '/topo.php';
include $path . '/home.php';
}
?>


home.php
<?php

echo 'Pagina Home';

?>


servicos.php
<?php

echo 'Pagina Serviços';

?>


contato.php
<?php

echo 'Pagina Contato';

?>


entendeu, faça um teste com esses codigos. coloca tudo no mesmo diretorio e não esqueça o arquivo .htaccess

Falou.
Diego
Re: URL Amigáveis
09 de April de 2011 às 09:04PM
fiz isso, o index funciona, mas nas outras paginas só aparece erro404
Lucas Tiago de Moraes
Re: URL Amigáveis
09 de April de 2011 às 10:04PM
Perdão,fiz na pressa e estava errado, coloca isso no index.php que vai funcionar:

<?php
$get = $_GET['get'];
// pegar o caminho
$path = realpath(dirname(__FILE__));
// verificar a get
if($get != ''){
$dados = explode('/', $get);
// define o caminho e o nome do arquivo
$arquivo = $path . '/' . $dados[0] . '.php';
// verificar se o arquivo existe
if(file_exists($arquivo) == false){
// pagina de erro
include $path . '/erro404.php';
}else{
include $arquivo;
}
}else{
include $path . '/topo.php';
include $path . '/servicos.php';
}
?>


quando vc vai me pagar uma cerveja?

Falou.
Lucas Tiago de Moraes
Re: URL Amigáveis
09 de April de 2011 às 10:06PM
O erro esta aqui:
$get[0]

e o correto era:
$dados[0]

tambem mude isso:
include $path . '/servicos.php';

por isso:
include $path . '/home.php';

Falou.
Diego
Re: URL Amigáveis
09 de April de 2011 às 11:50PM
hahahaa, agora sim lucas, funcionando de boa ;)
só mais uma dica (ai depois te pago a cerva),
se eu tiver um link
noticias.php?id=5 ou
noticias.php?id=5&cat=12

quais seriam as alterações para que os 3 tipos de links funcionassem

servicos.php - /servicos
noticias.php?id=5 - /noticias/5
noticias.php?id=5&cat=12 - /noticias/5/12

obrigado ;)
Lucas Tiago de Moraes
Re: URL Amigáveis
10 de April de 2011 às 12:11AM
então vou te mostrar como funciona,

http://localhost/contato/diego/5

para vc imprimir diego:
echo $dados['1'];

para vc imprimir 5
echo $dados['2'];

e assim por dianta: 3, 4 e etc...

so vou deixar bem claro para você, se vc usar get na home use assim:
http://localhost/home/diego/5

porque se vc colocar assim:
http://localhost/diego/5

o script vai achar que diego é um pagina: "diego.php", dai não vai encontrar o arquivo e vai redirecionar para pagina erro404.php

Falou.
Diego
Re: URL Amigáveis
10 de April de 2011 às 01:58PM
nao preciso mudar nda no .htaccess???
mes se tiver um link

noticias.php?id=5&cat=10&iduser=245
Lucas Tiago de Moraes
Re: URL Amigáveis
10 de April de 2011 às 03:49PM
não precisa mais de link assim, vc não precisa saber o indice da get e sim a posição

$_GET['id'] é igual a $dados['1']
$_GET['cat'] é igual a $dados['2']
$_GET['iduser'] é igual a $dados['3']

vai funcionar sim, mas não esqueça de colocar a extensão no nome do arquivo .php, so não estou entendo porque quer usar isso.

Falou.
Diego
Re: URL Amigáveis
10 de April de 2011 às 04:01PM
eu quero usar assim...
na minha página só existem links simples né
index.php
contato.php por ex.:

mas quero fazer uma parte com noticias
ai usarei links mais complexos
noticias.php?id=5&cat=10 por exemplo.

por isso queria saber como colocar os links pras noticias e se teria que mudar algo no codigo para que os links funcionem
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.