tubadc 0 Denunciar post Postado Março 12, 2008 Galera estou dechavando o topico http://forum.imasters.com.br/index.php?showtopic=203965 porém não consigo assimilar a idéia ainda veja tenho a url exemplo abaixo... http://www.site.com.br/index.php?ver=card&card=96 - o ver=card eu busco a página corresponde ao ver na pasta /paginas - o card nada mais é que o id do card o qual estou mostrando... o id 96 corresponde ao card "Mago de Aura Encantada" gostaria de que ficasse assim http://www.site.com.br/card/Mago-de-Aura-Encantada como faço pra trocar na variavel do .htaccess pelo nome do card ao invés do id 96 ou seja para não ficar assim http://www.site.com.br/card/96 Plz help... Vlw galera! Compartilhar este post Link para o post Compartilhar em outros sites
WarLiKe 0 Denunciar post Postado Março 12, 2008 Mas esse não é o nome da pasta?? Faz um programa q não nomeie com números e sim com nomes as pastas dos Cards pq pelo q parece você nomeia com IDs e usa um srt_replace pra tirar os espaços dos nomes nem li aquele forum ali q você postou o endereço pq tenho q sair agora . . . flw aew Compartilhar este post Link para o post Compartilhar em outros sites
tubadc 0 Denunciar post Postado Março 12, 2008 Então acho que te alguma confusão... Não existe uma página para cada card... existe por exemplo o arquivo card.php nesse arquivo eu busco no banco card=96 via $_GET['card'] ... e tem outra tem quase 15.000 cards... entre eles com acentos, apóstrofes .... Compartilhar este post Link para o post Compartilhar em outros sites
Diorgera 0 Denunciar post Postado Março 12, 2008 @tubadc Simplesmente: http://www.codeigniter.com e veja aqui: http://codeigniter.com/user_guide/general/urls.html Bom proveito! Compartilhar este post Link para o post Compartilhar em outros sites
tubadc 0 Denunciar post Postado Março 12, 2008 obrigado pela sugestão.... na altura do campeonato não rola alterar todo o site para um framework... é muito grande o site... não existe uma forma de pegar pelo título da página...? eu consigo por no título todos os nomes do cards... não teria como fazer com que trocasse na url??? Compartilhar este post Link para o post Compartilhar em outros sites
juniorneo2 0 Denunciar post Postado Março 12, 2008 E ai pessoal aproveitando o topico, estive dando uma olhada nesse topico: http://forum.imasters.com.br/index.php?showtopic=203965, estou com uma duvida na hora que chega esta parte nesse topico, ai vai o codigo: CODE * Comentário# << URLs Amigaveis * verifica se o modulo rewrite está habilitado se sim executa o bloco dentro * 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 * comentário # >> URLs Amigaveis A minha duvida seria o seguinte, estou utlizando o WAMP, ai queria saber como ficaria esta parte RewriteRule .(/)?$ /html/seuuser/www/index.php eu tentei colocar desse geito mas não deu RewriteRule .(/)?$ /html/localhost/index.php vlw pessoal http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
tubadc 0 Denunciar post Postado Março 12, 2008 /index.php alguem tem alguma sugestão para o problema inicial do topico? Compartilhar este post Link para o post Compartilhar em outros sites
klawdyo 0 Denunciar post Postado Março 12, 2008 Cara, primeiramente. Crie uma nova coluna na sua tabela e chame de, por exemplo, "short_url" Agora, crie um pequeno script pra automatizar o preenchimento desse campo. Tipo assim, você vai andar registro por registro e colocar nesse campo o nome do Card retirando os espaços e os acentos. Algo assim INSERT INTO Cards ('short_url') VALUES ('elfo-da-unhas-pintadas') Tá ligado? Vai consumir um bom processamento, mas é só pra alterar o banco de dados, ou então faça tudo manualmente, Bom, agora vamos para o segundo passo. Agora, nas páginas que exibem os links do tipo http://site.com.br/card/24 você substitue por http://site.com.br/card/gnomo-verde-e-rosa-da-mangueira apenas trocando o ID pelo short_url, previamente cadastrado. Agora, o terceiro passo Peque, na página card.php, e altere o seu select, que deve tá mais ou menos assim SELECT * FROM Cards WHERE id=24e substitua por algo mais ou menos assim SELECT * FROM Cards WHERE short_url='fadinha-safadinha' Agora, o 4º passo, que deveria ter sido o 2º, mas pode ser o 3º também. Altere seu .HTACCESS. Ele deve estar mais ou menos assim ReWriteEngine On ReWriteRule ^card/([0-9])$ card.php?id=$1 e substitua por algo assim ReWriteEngine On ReWriteRule ^card/([0-9A-Za-z])$ card.php?short_url=$1 Pronto, acho que não esqueci nada. Lembrando que acima estão apenas as idéias. Você deve adaptar conforme as necessidades, afinal de conta eu não conheço nada do interior do sistema. Compartilhar este post Link para o post Compartilhar em outros sites
tubadc 0 Denunciar post Postado Março 12, 2008 pow show de bola vlw... vou tentar aqui... Compartilhar este post Link para o post Compartilhar em outros sites
tubadc 0 Denunciar post Postado Março 12, 2008 Então seguindo o seu raciocinio estou fiz o seguinte: Para não ter de criar essa tabela adicional soh com a url pra puxar o id... deixei o id do card na url mesmo e adicionei o nome do card na url, de forma já otmizada "nome-do-card" . ai acontece o seguinte eu utilizo uma funçaõ para abrir as páginas enviadas por parametro dessa forma: www.meusite.com.br/index.php?pg=card&card=1&nome=nome-do-card dessa forma <? if (isset($_GET['pg'])){ $pg=ant_phpinject($_GET['pg']); }else { include ("paginas/home.php"); } ?> <? function ant_phpinject($pagina){ //Verifica se a string passada possui algum trecho invalido //Caso tenha mostra uma mensagem de erro if (preg_match("/^(http:\/\/|www\.|ftp:\/\/)/i", $pagina) || preg_match("/(\.jpg|\.gif|\.dat|\.txt|\.sql)$/i", $pagina) || eregi("wget|from|select|update|insert|delete|where|drop table|show tables|#|\*|--|\\\\", $pagina)) { echo "Página Inválida! Estamos redirecionando você para página inicial."; echo "<meta http-equiv=\"refresh\" content=\"2; URL=index.php\">"; }else{ if(!empty($pagina)) { if (file_exists("paginas/$pagina.php")) { @include ("paginas/$pagina.php"); } else { echo "Página Inexistente! Estamos redirecionando você para página inicial."; echo "<meta http-equiv=\"refresh\" content=\"2; URL=index.php\">"; } }else{ echo "Página Indefinida! Estamos redirecionando você para página inicial."; echo "<meta http-equiv=\"refresh\" content=\"2; URL=index.php\">"; } } } ?> e não estou conseguindo recuperar as variaveis se coloco o .htaccess ReWriteEngine On ReWriteRule ^card/$1/$2([0-9])$ index.php?ver=card&id=$1&nome=$2 Oque devo fazer...? Vlw ae... Compartilhar este post Link para o post Compartilhar em outros sites
klawdyo 0 Denunciar post Postado Março 12, 2008 ReWriteEngine On ReWriteRule ^card/$1/$2([0-9])$ index.php?ver=card&id=$1&nome=$2Acontece o sequinte. O $1 e o $2 não são usados no começo. Nessa primeira parte você teria que usar regras de expressões regulares. Tente assim ReWriteEngine On ReWriteRule ^card/([0-9])/([A-Za-z0-9])$ index.php?ver=card&id=$1&nome=$2 Dessa forma sua url terá que ser exibida assim http://site.com.br/card/69/nome-do-card Compartilhar este post Link para o post Compartilhar em outros sites
tubadc 0 Denunciar post Postado Março 12, 2008 pow show fiz a alteração... porém ele não acha a url.... =( oque devo fazer na minha função para pegar o parâmetro.... tentei fazer assim <?php function ant_phpinject($pagina){ //Verifica se a string passada possui algum trecho invalido //Caso tenha mostra uma mensagem de erro if (preg_match("/^(http:\/\/|www\.|ftp:\/\/)/i", $pagina) || preg_match("/(\.jpg|\.gif|\.dat|\.txt|\.sql)$/i", $pagina) || eregi("wget|from|select|update|insert|delete|where|drop table|show tables|#|\*|--|\\\\", $pagina)) { echo "Página Inválida! Estamos redirecionando você para página inicial."; echo "<meta http-equiv=\"refresh\" content=\"2; URL=index.php\">"; }else{ if(!empty($pagina)) { #:: 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("paginas/" . $get[0] . ".php")){ require ("paginas/" . $get[0] . ".php"); } else { echo "Página Inexistente! Estamos redirecionando você para página inicial."; echo "<meta http-equiv=\"refresh\" content=\"2; URL=index.php\">"; } }else{ echo "Página Indefinida! Estamos redirecionando você para página inicial."; echo "<meta http-equiv=\"refresh\" content=\"2; URL=index.php\">"; } } } ?> mas não rolou.... desculpe a ignorância... mas depois dessa pego a manha.... Compartilhar este post Link para o post Compartilhar em outros sites
klawdyo 0 Denunciar post Postado Março 12, 2008 Deixe-me ver se entendi. Esse código aí pega a URL já modificada no estilo site.com/card/24/nome-do-cartao e joga numa exxpressão regular para separar os ítens da url, e usa o id retirado para procurar a página exata no formato index.php?num-se-oque=card, etc? Eu entendi correto? É isso mesmo? Bom, se for isso mesmo, você tá fazendo errado. Porque o que nós tamos fazendo é uma REESCRITA de urls, e não um redirecionamento. Sendo assim, apenas com a mudança no HTACCESS e o código que eu te passei já funcionará. Faça aí você mesmo um teste. Crie um pasta aí no seu LOCALHOST chamada "reescrita" (sem as aspas, claro) Crie uma página chamada teste.php e coloque o seguinte código dentro dela <pre> <? print_r($_GET); ?> Agora crie um arquivo htaccess de teste dentro desse diretório e coloque o seguinte código dentro dele RewriteEngine On RewriteRule ^card/([0-9]{0,})/([A-Za-z0-9]{0,}) teste.php?ver=card&id=$1&nome=$2 Agora chame pelo navegador o seguinte endereço http://localhost/reescrita/card/24/nome-da-pasta Se tudo deu certo, você deverá receber um resultado mais ou menos assim: Array ( [ver] => card [id] => 24 [nome] => nome-da-pasta ) Quando fizer isso me avise o que apareceu, e quais as próximas dúvidas. Compartilhar este post Link para o post Compartilhar em outros sites
klawdyo 0 Denunciar post Postado Março 12, 2008 Aí, fiz o teste com esse código que te passei mas tinha um erro. Havia esquecido de colocar um detalhezinho na expressão regular. Faça assim, baixe esse arquivo e faça o teste. Aqui ele funcionou belezura. Compartilhar este post Link para o post Compartilhar em outros sites
tubadc 0 Denunciar post Postado Março 12, 2008 xiii o link do arquivo não tá funcioando.... Compartilhar este post Link para o post Compartilhar em outros sites
tubadc 0 Denunciar post Postado Março 12, 2008 consegui fazer com o seu exemplo aqui mesmo mas ele perde todas as css pois transforma tudo para a url amigável... e não encotra as css... tem algum jeito de falar para não pegar as css? Compartilhar este post Link para o post Compartilhar em outros sites
klawdyo 0 Denunciar post Postado Março 13, 2008 Quando eu coloquei o arquivo pra download, eu também alterei o post anterior a ele e consertei o erro. Como eu falei, era apenas um detalhezinho na expressão regular. Eu só acrescentei {0,} após os dois pares de colchetes. Depois eu tirei o $, para que funcionasse com a barra no final e também sem a barra. Bom, quanto ao download, aqui tá funcionando legal. VocÊ é direcionado a uma página, e nessa página tem o link do download. Quanto aos CSS, isso deve acontecer com os JS e as imagens também. Para resolver é só vocÊ colocar o endereço completo nele, com http e tudo mais. Compartilhar este post Link para o post Compartilhar em outros sites
tubadc 0 Denunciar post Postado Março 13, 2008 caraaa.... tu eh bom.... naum naum naum.... tu eh bom sim.... pqp.... vlw mesmo nunca pensei que seria tão simples... depois que tu me passo a lógica e tal e eu assimilei , demorei um poko pra assimilar... realmente é simples a parada e fica show! vlw irmão =) [RESOLVIDO] Compartilhar este post Link para o post Compartilhar em outros sites
klawdyo 0 Denunciar post Postado Março 13, 2008 hehehehe eu sou bom? hehehehehe eu sou nada.. eu vivo quebrando a cabeça com coisa boba todos os dias.. hehehehe por isso que quando entro num fórum e vejo outra pessoa com uma dúvida que eu já tive, eu tento ajudá-la de todas as formas. Mas é isso aí. Até a próxima Compartilhar este post Link para o post Compartilhar em outros sites