Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!
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 ....
@tubadc
Simplesmente: http://www.codeigniter.com
e veja aqui: http://codeigniter.com/user_guide/general/urls.html
Bom proveito!
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???
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
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
/index.php
alguem tem alguma sugestão para o problema inicial do topico?
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.
pow show de bola vlw... vou tentar aqui...
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...
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
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....
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);
?>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
)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.
xiii o link do arquivo não tá funcioando....
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?
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.
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]
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
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