Ir para conteúdo

Arquivado

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

Scientist

Capturando valor digitado após a barra

Recommended Posts

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

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

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

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

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

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

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

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

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

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

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

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

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

×

Informação importante

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