Ir para conteúdo

Arquivado

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

tubadc

url amigáveis .... estudando mas preciso de !

Recommended Posts

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

 

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

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

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

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

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

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=24
e 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

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

ReWriteEngine On
ReWriteRule ^card/$1/$2([0-9])$ index.php?ver=card&id=$1&nome=$2
Acontece 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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.