Scientist 2 Denunciar post Postado Janeiro 21, 2013 Boa noite, possuo milhares de videos registrados no sistema, onde cada um possui um código e um apelido (que nunca se repete, sem espaços e caracteres especiais nem acentos). ex: Video de código 3456, tem o apelido ourobranco. Gostaria que quando o usuário entrasse no website com o seguinte endereço: www.meusite.com/ourobranco, ele fosse redirecionado para a página www.meusite.com/index.php?video=3456. Eu sei que posso criar uma pasta logo na raiz do site com um index.php e redirecionar para o endereço que desejo, mas isso é fora de cogitação sendo que temos milhares de vídeos. Imagine milhares de pastas na raiz só para redirecionar, não faz sentido. Se alguém tiver alguma sugestão, agradeço. Compartilhar este post Link para o post Compartilhar em outros sites
viniciuswebdev 8 Denunciar post Postado Janeiro 22, 2013 Amigo, você pode fazer isto usando um arquivo .htaccess, ele vai redirecionar todo o conteúdo da url em uma variável e assim você podera gerenciar como quiser, vou deixar aqui um vídeo e um artigo que pode te ajudar: http://www.videoaulasbrasil.com.br/url-amigavel-com-php/ http://blog.thiagobelem.net/aprendendo-urls-amigaveis/ Compartilhar este post Link para o post Compartilhar em outros sites
Scientist 2 Denunciar post Postado Janeiro 22, 2013 Bom, eu entendi a utilização da Url amigável, mas como disse: Como vou tratar milhares de redirecionamentos dinamicamente ? Se eu fizer manualmente no .htaccess, toda vez que alguem criar um novo video eu teria que adicionar o redirecionamento no .htacess. Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Janeiro 22, 2013 O usuário vinicius está correto. Deve ser feito por .htaccess, entretanto, você deverá consultar utilizando o apelido no SGBD ao invés do ID. Compartilhar este post Link para o post Compartilhar em outros sites
InterPlanet 7 Denunciar post Postado Janeiro 22, 2013 Exemplo prático: <IfModule mod_rewrite.c> RewriteEngine On # No caso de id numerico RewriteRule ^video/([0-9]+)$ index.php?videoID=$1 [NC,L] # No caso de id string RewriteRule ^video/([a-z]+)$ index.php?videoNome=$1 [NC,L] </IfModule> Ai é só tratar por GET as variavéis $videoNome e/ou $videoID. Leia os links do @viniciuswebdev, principalmente do Thiago Belem, muito bom. Compartilhar este post Link para o post Compartilhar em outros sites
Scientist 2 Denunciar post Postado Janeiro 22, 2013 poderia me dar um exemplo usando consulta em SGBD ? Compartilhar este post Link para o post Compartilhar em outros sites
viniciuswebdev 8 Denunciar post Postado Janeiro 23, 2013 SGBD é seu banco de dados. Na sua URL você não terá mais o ID ( arquivo.php?id_video=123 ) você terá o apelido dele ( /meuvideolegal ),então você terá de fazer a busca pelo apelido e não mais pelo ID. Foi isso que o Gabriel quis dizer. Conseguiu mecher com o .htaccess? Compartilhar este post Link para o post Compartilhar em outros sites
Scientist 2 Denunciar post Postado Janeiro 23, 2013 Vamos lá, poderia fazer da seguinte forma então: Tudo que o usuário digitar na barra de endereço eu redireciono para uma pagina chamada url.php, lá eu trato o que foi digitado e pesquiso se há um apelido daqueles no BANCO, caso positivo eu redireciono para o ID do video, caso negativo eu mando ele para a URL que ele de fato iria. Compartilhar este post Link para o post Compartilhar em outros sites
viniciuswebdev 8 Denunciar post Postado Janeiro 23, 2013 Você pode adicionar estas duas regras no seu .htaccess: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d Isso quer dizer que se o arquivo ou diretório existir, ele não vai aplicar a regra. Mas aproveitando, eu altamente recomendo fazer a arquitetura do seu site toda em URLs amigáveis, você consegue centralizar o ponto de entrada das suas solicitações, além de ter uma indexação no Google muito melhor, dentre outras vantagens. Compartilhar este post Link para o post Compartilhar em outros sites
Scientist 2 Denunciar post Postado Janeiro 23, 2013 Não sei se é isso que eu preciso ou sou eu quem não está entendendo ,vou dar um exemplo prático. O Usuário digita: www.meusite.com.br/ourobranco. O Sistema deve verifica dentro da tabela VIDEO uma tupla que possua o apelido ourobranco. Supondo que ele achou o vídeo de código 345 com o apelido ourobranco. O Sistema deve redirecionar este usuário para: www.meusite.com.br/?video=345 Compartilhar este post Link para o post Compartilhar em outros sites
viniciuswebdev 8 Denunciar post Postado Janeiro 23, 2013 Exemplo prático: .htaccess RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?url=$1 index.php $slug = $_GET['url']; //Esta variável vai ter a string depois da barra, no nosso caso pode ser 'meuvideolegal' $query = mysql_query("SELECT id, video, slug FROM videos WHERE slug = $slug"); Compartilhar este post Link para o post Compartilhar em outros sites
Scientist 2 Denunciar post Postado Janeiro 23, 2013 Com essa regra acima todo o website poderá ter url amigáveis, sendo que eu devo tratar a variavel URL e redirecionar para a página adequada, correto ? Compartilhar este post Link para o post Compartilhar em outros sites
viniciuswebdev 8 Denunciar post Postado Janeiro 23, 2013 Eu acho mais fácil incluir os arquivos, tipo assim: <head> </head> <body> <?php switch($_GET['url']){ case 'quemsomos': include ('quem_somos.php'); break; case 'contato': include ('contato.php'); break; } ?> </body> Compartilhar este post Link para o post Compartilhar em outros sites
Scientist 2 Denunciar post Postado Janeiro 23, 2013 Sim, creio que seja melhor fazer o tratamento todo na página URL.php do que direto no arquivo .htaccess. Acho que fica mais fácil de controlar e gerenciar isso. Compartilhar este post Link para o post Compartilhar em outros sites