Jhonei 0 Denunciar post Postado Maio 2, 2012 Gostaria de saber onde está o erro, porque a url não está ficando amigável, ou seja, omitindo os diretórios e incluindo as barras... Código php Query String: <?php $pagina = isset($_GET['pagina']) ? strip_tags(trim($_GET['pagina'])) : ''; $conteudo = isset($_GET['conteudo']) ? strip_tags(trim($_GET['conteudo'])) : ''; if ($pagina == "$pagina" && !$conteudo) { $Pg = 'arquivos/'.$pagina.'.php'; } elseif ($pagina == "$pagina" && $conteudo == "$conteudo") { $SubPg = 'cds/'.$conteudo.'.php'; } ?> .htaccess: Options +FollowSymLinks RewriteEngine on RewriteCondRewriteRule !\.(css|jpg|jpeg|gif|png|swf|js)$ script.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)\/?(.*)\/?$ index.php?pagina=$1&conteudo=$2 Grato desde já, pela ajuda!!! Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Maio 2, 2012 Realizou as alterações no httpd.conf? Verifique-as. Verifique esta expressão regular: ^(.*)\/?(.*)\/?$ Ela está muito gulosa, seja mais específico ou terá problemas. Compartilhar este post Link para o post Compartilhar em outros sites
Jhonei 0 Denunciar post Postado Maio 2, 2012 Verifique esta expressão regular: ^(.*)\/?(.*)\/?$ Ela está muito gulosa, seja mais específico ou terá problemas. Caro amigo "Gabriel Heming" eu já testei o meu query string com várias expressões htaccess, mas não obtive sucesso em nenhuma delas. Já utilizei até vários geradores de htacces para url dinâmica. mas como dito, sem sucesso. Por isso eu pus uma expressão abrangente contudo, continuo na mesma... Acredito que o defeito esteja no código query string possa ser até a faita de um explode ou a falta de padronização no código. $pagina = isset($_GET['pagina']) ? explode('/', strip_tags(trim($_GET['pagina'])) : ''; $conteudo = isset($_GET['conteudo']) ? explode('/', strip_tags(trim($_GET['conteudo'])) : ''; Esta colocação de "explode('/', strip_tags(trim($_GET" está correta??? Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Maio 2, 2012 Em algum momento você consegui utilizar url dinâmica? Talvez não seja sua query string. Leia esse tópico caso a sentença acima é verdadeira. Não mostrar o caminho e o na url Nesse artigo, há o básico para ativar url rewrite. Compartilhar este post Link para o post Compartilhar em outros sites
Jhonei 0 Denunciar post Postado Maio 2, 2012 O problema é que o meu query string possui seções e subseções, ou seja. link's assim: exemplo.com/?pagina=home exemplo.com/?pagina=fotos exemplo.com/?pagina=videos ETC... E link's assim: exemplo.com/?pagina=home&conteudo=natureza exemplo.com/?pagina=home&conteudo=esports exemplo.com/?pagina=home&conteudo=noticias ETC... Não sei muito de htaccess mais acredito que a expressão "^(.*)\/?(.*)\/?$" deva estar entrando em conflito, por se tratar de duas seções de url's em um site. Será eu eu tenho que fazer uma expressão para a seção e outra para a sub? link do meu exemplo para mostrar como o site funciona: Clique aqui Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Maio 2, 2012 Bom, não entendo muito de url rewrite, mas até onde sei, os backreference (retrovisores) não podem ser dinâmicos. Você terá que possuir uma regra para cada tipo, mas não utilize "." jamais, porque essa url noticia/detalhe vai casar com essa expressão: ^(.*)$ Assim, você aceita TUDO, inclusive barras. Seja específico. Diga que aceita somente letras, números, ponto, desenhos, figuras, sons.... mas nunca tudo. será melhor assim: RewriteRule ^([\w]+)\/?$ index.php?pagina=$1 RewriteRule ^([\w]+)\/([\w]+)\/?$ index.php?pagina=$1&conteudo=$2 Este artigo é bem interessante para entender sobre o porque de não usar o . (ponto) em expressões regulares Quantificadores gulosos Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Maio 2, 2012 de uma olhada nisto http://forum.imasters.com.br/blog/193/entry-122-tutorial-basico-de-url-amigaveis-vhost/ Compartilhar este post Link para o post Compartilhar em outros sites
Jhonei 0 Denunciar post Postado Maio 3, 2012 Galera eu fiz tudo que me mandaram, mas estou ainda sem sucesso!! Algem poderia me dar mais alguma ideia??? Abaixo estão os código atualizado para quem quiser analizar: query_string.php <?php $pagina = isset($_GET['pagina']) ? $_GET['pagina'] : ''; $conteudo = isset($_GET['conteudo']) ? $_GET['conteudo'] : ''; if ($pagina == "$pagina" && !$conteudo) { $Pg = 'arquivos/'.$pagina.'.php'; } elseif ($pagina == "$pagina" && $conteudo == "$conteudo") { $SubPg = 'conteudo/'.$conteudo.'.php'; } switch ($pagina) { case 'home': $title = 'Home'; $description = 'Página inicial do site de teste'; $keywords = 'página inicial, site de teste, site, etc...'; break; case 'perfil': $title = "Perfil"; $description = "Página do perfil do site de teste"; $keywords ="página dos perfil, perfil, perfil do site de teste"; break; case 'fotos': $title = 'Fotos'; $description = 'Página de fotos do site de teste'; $keywords ='página de fotos, fotos, fotos do site de teste'; break; case 'videos': $title = 'Vídeos'; $description = 'Página de vídeos do site de teste'; $keywords ='página de vídeos, vídeos, vídeos do site de teste'; break; case 'faleconosco': $title = 'Fale Conosco'; $description = 'Página de fale conosco do site de teste'; $keywords ='página de fale conosco, fale conosco, fale conosco do site de teste'; break; default: $title = 'Home'; $description = 'Página inicial do site de teste'; $keywords ='página inicial, site de teste, site, etc...'; break; } switch ($conteudo) { case 'educacao': $title = 'Educação'; $description = 'Página de educação do site de teste'; $keywords ='página do educação, educação, educação do site de teste'; break; case 'esporte': $title = 'Esporte'; $description = 'Página de esporte do site de teste'; $keywords ='página de esporte, esporte, esporte do site de teste'; break; case 'cultura': $title = 'Cultura'; $description = 'Página de cultura do site de teste'; $keywords ='página de cultura, cultura, cultura do site de teste'; break; case 'natureza': $title = 'Natureza'; $description = 'Página de natureza do site de teste'; $keywords ='página de natureza, natureza, natureza do site de teste'; break; case 'religiao': $title = 'Religião'; $description = 'Página de religião do site de teste'; $keywords ='página de religião, religião, religião do site de teste'; break; case 'politica': $title = 'Política'; $description = 'Página de política do site de teste'; $keywords ='página de política, política, política do site de teste'; break; } ?> .htaccess #Options +FollowSymLinks RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([\w]+)\/?$ ?pagina=$1 RewriteRule ^([\w]+)\/([\w]+)\/?$ ?pagina=$1&conteudo=$2 index.php <?php include "query_string.php" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title><?php echo $title; ?></title> <meta name="description" content="<?php echo $description; ?>" /> <meta name="keywords" content="<?php echo $keywords; ?>" /> </head> <body> <table width="100%" height="1050px" border="1" cellspacing="0" cellpadding="0"> <tr> <th height="200px" colspan="5"><h1>Titulo</h1></th> </tr> <tr id="menu_horizontal" align="center" height="30px"> <td><a href="?pagina=home">Home</a></td> <td><a href="?pagina=perfil">Perfil</a></td> <td><a href="?pagina=fotos">Fotos</a></td> <td><a href="?pagina=videos">Videos</a></td> <td><a href="?pagina=faleconosco">Fale Conosco</a></td> </tr> <tr> <td id="loader_menu_horizontal" height="800px" align="center" colspan="5"> <?php if( (isset($Pg)) and (file_exists($Pg)) ) { include($Pg); } else { include ("arquivos/home.php"); } ?> </td> </tr> <tr> <td height="20px" colspan="5" align="center">Roda pé</td> </tr> </table> </body> </html> home.php <table width="100%" height="100%" border="1" cellspacing="0" cellpadding="0"> <tr> <td id="menu_vertical" width="18%"><a href="?pagina=home&conteudo=educacao">Educação</a></td> <td id="loader_menu_vertical" rowspan="7" align="center"> <?php if( (isset($SubPg)) and (file_exists($SubPg)) ) { include($SubPg); } else { include ("conteudo/inicio.php"); } ?> </td> </tr> <tr> <td id="menu_vertical"><a href="?pagina=home&conteudo=esporte">Esporte</a></td> </tr> <tr> <td id="menu_vertical"><a href="?pagina=home&conteudo=cultura">Cultura</a></td> </tr> <tr> <td id="menu_vertical"><a href="?pagina=home&conteudo=natureza">Natureza</a></td> </tr> <tr> <td id="menu_vertical"><a href="?pagina=home&conteudo=religiao">Religião</a></td> </tr> <tr> <td id="menu_vertical"><a href="?pagina=home&conteudo=politica">Política</a></td> </tr> <tr> <td></td> </tr> </table> Link de referencia para mostra os códigos funcionando Grato desde já pela ajuda dos senhores... Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Maio 3, 2012 Se você quer utilizar .htaccess, porque ainda chama da forma habitual??? Isto: <td><a href="?pagina=home">Home</a></td> <td><a href="?pagina=perfil">Perfil</a></td> <td><a href="?pagina=fotos">Fotos</a></td> <td><a href="?pagina=videos">Videos</a></td> <td><a href="?pagina=faleconosco">Fale Conosco</a></td> Deveria ser assim: <td><a href="home">Home</a></td> <td><a href="perfil">Perfil</a></td> <td><a href="fotos">Fotos</a></td> <td><a href="videos">Videos</a></td> <td><a href="faleconosco">Fale Conosco</a></td> E estes: <tr> <td id="menu_vertical"><a href="?pagina=home&conteudo=esporte">Esporte</a></td> </tr> <tr> <td id="menu_vertical"><a href="?pagina=home&conteudo=cultura">Cultura</a></td> </tr> <tr> <td id="menu_vertical"><a href="?pagina=home&conteudo=natureza">Natureza</a></td> </tr> <tr> <td id="menu_vertical"><a href="?pagina=home&conteudo=religiao">Religião</a></td> </tr> <tr> <td id="menu_vertical"><a href="?pagina=home&conteudo=politica">Política</a></td> </tr> Deveriam estar assim: <tr> <td id="menu_vertical"><a href="home/esporte">Esporte</a></td> </tr> <tr> <td id="menu_vertical"><a href="home/cultura">Cultura</a></td> </tr> <tr> <td id="menu_vertical"><a href="home/natureza">Natureza</a></td> </tr> <tr> <td id="menu_vertical"><a href="home/religiao">Religião</a></td> </tr> <tr> <td id="menu_vertical"><a href="home/politica">Política</a></td> </tr> Você está utilizando tudo que é necessário para url rewrite, menos a própria URL. Compartilhar este post Link para o post Compartilhar em outros sites
Jhonei 0 Denunciar post Postado Maio 3, 2012 Se você quer utilizar query string, porque ainda chama da forma habitual??? Isto: <td><a href="?pagina=home">Home</a></td> <td><a href="?pagina=perfil">Perfil</a></td> <td><a href="?pagina=fotos">Fotos</a></td> <td><a href="?pagina=videos">Videos</a></td> <td><a href="?pagina=faleconosco">Fale Conosco</a></td> Deveria ser assim: <td><a href="home">Home</a></td> <td><a href="perfil">Perfil</a></td> <td><a href="fotos">Fotos</a></td> <td><a href="videos">Videos</a></td> <td><a href="faleconosco">Fale Conosco</a></td> E estes: <tr> <td id="menu_vertical"><a href="?pagina=home&conteudo=esporte">Esporte</a></td> </tr> <tr> <td id="menu_vertical"><a href="?pagina=home&conteudo=cultura">Cultura</a></td> </tr> <tr> <td id="menu_vertical"><a href="?pagina=home&conteudo=natureza">Natureza</a></td> </tr> <tr> <td id="menu_vertical"><a href="?pagina=home&conteudo=religiao">Religião</a></td> </tr> <tr> <td id="menu_vertical"><a href="?pagina=home&conteudo=politica">Política</a></td> </tr> Deveriam estar assim: <tr> <td id="menu_vertical"><a href="home/esporte">Esporte</a></td> </tr> <tr> <td id="menu_vertical"><a href="home/cultura">Cultura</a></td> </tr> <tr> <td id="menu_vertical"><a href="home/natureza">Natureza</a></td> </tr> <tr> <td id="menu_vertical"><a href="home/religiao">Religião</a></td> </tr> <tr> <td id="menu_vertical"><a href="home/politica">Política</a></td> </tr> Você está utilizando tudo que é necessário para url rewrite, menos a própria URL. Gabriel Heming, desta forma não funcionou!! Fica aparecendo a mensagem "not-found". Acredito que porque o "?pagina= eo &conteudo=" é o atributo que transforma o link em variável para que assim, o query string consiga identifica-lo... Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Maio 3, 2012 Gabriel Heming, desta forma não funcionou!! Fica aparecendo a mensagem "not-found". Acredito que porque o "?pagina= eo &conteudo=" é o atributo que transforma o link em variável para que assim, o query string consiga identifica-lo... Sim e não. Se você não estivesse utilizando url rewrite, isso seria correto. Mas você está implementando .htacces e url rewrite, assim, você está definindo como serão passados os parâmetros no próprio .htaccess. Então, a url não é mais da forma tradicional (?pagina= eo &conteudo=) e sim da forma que foi definido no .htaccess. Tenho a ligeira impressão de que você não alterou o arquivo httpd.conf, pois eu lhe perguntei e não obtive resposta. Segue alguns artigos para você ler, pois você não está entendendo o objetivo de url rewrite. URL Rewriting: Criando URLs competitivas! TRABALHANDO COM URL AMIGÁVEL COM PHP URL Rewrite não serve para criar url's dinâmicas, e sim para reescrever uma url de uma forma mais amigável, de uma forma mais "humana". Se você não quer transformar em uma url amigável, não há a menor necessidade do .htacces. Falo assim para lhe dar um "chacoalhão", pois você está se confundindo com o que deve ou não ser utilizado. Uma query string, você realiza somente com PHP. O .htaccess nesse contexto, será somente para Url rewrite. Compartilhar este post Link para o post Compartilhar em outros sites
Jhonei 0 Denunciar post Postado Maio 3, 2012 Tenho a ligeira impressão de que você não alterou o arquivo httpd.conf, pois eu lhe perguntei e não obtive resposta. Me desculpe por não ter respondido, mas é porque eu não utilizo o Apache. Este httpd.conf existe e pode ser alterado no meu servido online? Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Maio 3, 2012 Sei que o .htaccess roda em alguns servidores além do apache. Mas não roda no IIS, deve ser transcrito. Qual servidor você usa para conseguir usar o .htaccess? Compartilhar este post Link para o post Compartilhar em outros sites
Jhonei 0 Denunciar post Postado Maio 3, 2012 O servidor é o orgfree.com Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Maio 3, 2012 - mod_rewrite enabled (apache 2.2); full dot files support (.htpasswd, .htaccess - posibility to set custom error pages, to block unwanted ips/sites, to turn on/off indexes etc. etc.); Bom, habilitado está. Mas o porque de não estar funcionando.... Agora é a outra parte, o que exatamente você quer fazer? Quer apenas que as url's sejam dinâmicas ou que, além de dinâmicas, sejam amigáveis? Compartilhar este post Link para o post Compartilhar em outros sites
Jhonei 0 Denunciar post Postado Maio 3, 2012 Bom, habilitado está. Mas o porque de não estar funcionando.... Agora é a outra parte, o que exatamente você quer fazer? Quer apenas que as url's sejam dinâmicas ou que, além de dinâmicas, sejam amigáveis? Exatamente os dois!!! Eu pus o WampServer e cofigurei o apache ele funcionou, mas nos sub link's "home/esporte" ele fica acrescentando um home amais a cada link clicado(exem: home/esporte, home/home/educacao) e assim por diante... você saberia o porque de o home ficar sendo acrescentado por cada link amais clicado? tentei resolver isso de várias formas, mas não consegui.. No apache funcionou não perfeitamente, mas conseguiu rodar. O defeito deve ser no servidor online. Irei procurar outro que suporte o htaccess. Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Maio 3, 2012 Mande o código dos links e o .htaccess para eu poder verificar. Compartilhar este post Link para o post Compartilhar em outros sites
Jhonei 0 Denunciar post Postado Maio 3, 2012 Gabriel Heming, eu consegui fazer o htaccess funcionar no meu servidor free online com a inclusão desse código no topo do htaccess: RewriteBase / O código dos link's continua sendo o que você me indicou: menu horizontal: <td><a href="home">Home</a></td> <td><a href="perfil">Perfil</a></td> <td><a href="fotos">Fotos</a></td> <td><a href="videos">Videos</a></td> <td><a href="faleconosco">Fale Conosco</a></td> menu vertical: <tr> <td id="menu_vertical"><a href="home/esporte">Esporte</a></td> </tr> <tr> <td id="menu_vertical"><a href="home/cultura">Cultura</a></td> </tr> <tr> <td id="menu_vertical"><a href="home/natureza">Natureza</a></td> </tr> <tr> <td id="menu_vertical"><a href="home/religiao">Religião</a></td> </tr> <tr> <td id="menu_vertical"><a href="home/politica">Política</a></td> </tr> O .htaccess também continua sendo o que você me indicou com a simples inclusão do código RewriteBase / no topo: RewriteBase / RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([\w]+)\/?$ ?pagina=$1 RewriteRule ^([\w]+)\/([\w]+)\/?$ ?pagina=$1&conteudo=$2 você verá o exemplo rodando no link a seguir: http://exemplos.orgfree.com/ E você também verá o defeito no menu vertical. Compartilhar este post Link para o post Compartilhar em outros sites
Jhonei 0 Denunciar post Postado Maio 7, 2012 E ai galera, alguém poderia me ajudar a resolver este impasse... Pode ser qualquer ajuda!! Me dizendo aonde está o erro. Dando alguma ideia. Algo que seja construtivo!!! Grato desde já pela ajuda dos senhores... Compartilhar este post Link para o post Compartilhar em outros sites
Jhonei 0 Denunciar post Postado Maio 14, 2012 galera o código que estou utilizando é este: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([a-z,0-9,A-Z]+)\/?$ ?pagina=$1 RewriteRule ^([a-z,0-9,A-Z]+)\/([a-z,0-9,A-Z]+)\/?$ ?pagina=$1&conteudo=$2 O problema é que nos sublink's o htacces está acrescentando um home amais a cada link clicado (exemplo: home/esporte, home/home/educacao) e assim por diante... Acredito que o "RewriteRule ^([a-z,0-9,A-Z]+)\/?$ ?pagina=$1" está entrando em conflito com o "RewriteRule ^([a-z,0-9,A-Z]+)\/([a-z,0-9,A-Z]+)\/?$ ?pagina=$1&conteudo=$2". Teria com eu usar o operador XOR para que desta forma impedisse que o navegador leia os dois código ao mesmo tempo? Compartilhar este post Link para o post Compartilhar em outros sites