40 thoughts on “Trabalhando URL Amigável com PHP

  1. David,

    como faço pra executar toda essa vídeo-aula, mas de forma online?

    Teria que acessar o .htaccess do site de hospédagem e colocar aqueles códigos que você passou?

    Mais alguma coisa?

    Desde já, lhe agradeço

  2. Prezado,

    Tudo bem?
    Nessa questão de URL amigável gostaria de esclarecer uma dúvida.
    Como criar uma URL amigável do tipo http://www.ctasoftware.com.br/titulo-da-minha-noticia ?

    Vários blogs e forum ensinam a seguinte maneira http://www.ctasoftware.com.br/noticia/1234, ou seja, notícia e id notícia, dessa maneira fica bastante estranho, acredito que a melhor maneira seja http://www.ctasoftware.com.br/titulo-da-minha-noticia alguma vez você já realizou isso? Teria algum script ou dica de como fazer?

    Obrigado.

    1. Everton, na verdade é da mesma maneira, a única diferença é que vai gravar uma parte da URL no banco de dados. Exemplo:

      http://www.seusite.com.br/titulo-da-noticia

      titulo-da-noticia => grava no banco de dados.

      Então vc vai capturar essa parte da url, da mesma maneira q fizemos na vídeo aula, e irá realizar uma pesquisa no banco de dados, como ele fosse um ID. Um detalhe, é importante vc garantir q essa url seja unica, pra não dá problema

      1. e como diferenciar ela de ser uma pagina e de uma pesquisa.
        por exemplo:
        seusite.com.br/contato, buscará a pagina contato
        e seusite.com.br/titulo-da-noticia
        buscará como pagina?
        Aproveitando..;
        se eu tiver um site com varias pastas,
        www/-> home | produtos | contato,etc
        www/blog-> inicio | postagem/12/12/2012
        www/adm->
        www/forum->
        como deve ser o código php pra chamar as páginas?

  3. Bom dia, David!

    Primeiramente muito boa a video aula, consegui fazer tudo certinho como vc
    mostrou. Só teve um pequeno problema q eu acho q vc com o seu vasto conhecimento
    pode me ajudar. srsr

    é o seguindo eu tenho uma pasta chamada “design” onde nela tem outras pastas
    seguindo o modelo abaixo?

    design->default->

    ai dentro de default eu tenho as seguintes pastas:

    ->css
    ->img
    ->js
    ->paginashtml

    bom quando eu estou na index.php meu codigo fonte seria esse

    HOME

    veja q eu chamo os arquivos da pasta design no cabeçalho, mais se eu entrar
    com a segiunte url ex:
    http://localhost/meusite/produtos/
    por exemplo eu teria q ter o seguinte codigo fonte:

    HOME

    vc sabe por q isso está acontecendo e se isso é para acontecer?

    1. Primeira coisa é enviar essa informação já formatada, pq no formulário ele vai enviar tipo query string, então vc precisa trabalhar com javascript pra formatar o valor, exemplo:

      jQuery("#estados").change(function(){
         var estado = jQuery(this).val();
         window.location = 'seusite.com.br/'.estado;
         return false;
      });
      

      Lembrando q o valor pela URL tem q está formatado tbm, no caso as palavras sem espaços

      Depois de passar a informação, precisamos agora analisar com trabalhar com esse valor.

      Na videoaula informo que o primeiro parametro seria o arquivo, mas aqui temos uma exceção. Então o q vc pode fazer ?

      Retornaria todos esses nome dos banco, ou manualmente, vai depender de vc, e colocaria no array, e faria uma condição: Se o primeiro parâmetro da URL for igual aos nomes q do estado, inclui um arquivo exclusivo. Exemplo

      $cidade = array('rio-de-janeiro', 'sao-paulo');
      
      $atual = explode('/', $_GET['pg']);
      
      if(in_array($atual[0], $cidade)){
        $page = 'cidades';
        $_GET['cidade'] = $atual[0];
      }else{
      
        /*Continua a logica*/
      }
      

      Veja q faço a verificação e defino nome do arquivo q será incluido. Mas vc viu q crie uma variavel superglobal $_GET[‘cidade’],e atribui o nome do parametro a era, mas pq ? Se vc estiver trabalhando no banco de dados, e quiser realizar uma pesquisa pra buscar os dados da cidade passada para URL, assim fica mais facil pra vc recuperar em qualquer página

    1. Marlon, vc pode tentar fazer algo assim:

      RewriteEngine on
      RewriteCond %{HTTP_HOST} !^www\.
      RewriteCond %{HTTP_HOST} ^(.*)\.seusite\.com\.br
      RewriteRule ./index.php?var=%1 [L]
      
  4. Olá David. Sua vídeo aula foi a melhor de todas as que eu vi na internet sobre essa questão de url’s amigáveis.
    Mas estou com um problema: No meu projeto eu tenho um menu de opções, quando eu clico por exemplo em noticias(localhost/projeto/noticias), é listada todas as noticias cadastradas tudo certinho. Mas quando clico em uma das noticias(localhost/projeto/postt/14), onde post=pagina que será incluida, e 14=id da noticia. Quando clico no link o site parce que duplica e carrega duas vezes um por cima do outro e a noticia não é exibida. Isso ocorre com todos os ‘sublinks’ do site! Espero que tenha me entendido! Aguado uma salvação!

    1. Ivan, nem tenho mais esses arquivos. O .htaccess precisa está na pasta raiz do site. E não precisa de permissão. Verifique se hoteldaweb é necessário algo para habilitar o htaccess.

  5. Boa tarde David,
    Não entendo, eu tento fazer de tudo mas não consigo obter êxito, creio que seja algo simples, por exemplo, eu tenho uma index e nela fica a ‘estrutura’ simples do site com a variavel topico:
    Tudo bem, tenho uma página ‘single.php’ que exibe as noticias dinamicas com o seguinte link:
    http://localhost/arconservice/index.php?topicos=nav/single&topico=29

    Neste caso, qual o caminho a seguir no htaccess e no php?
    Sinto que é bem possível alterar isso, mas esta um nó na cabeça.
    Aguardo sua resposta.
    Abraço.

  6. Olá David,

    Primeiramente, muito obrigado pela vídeo aula, me ajudou muito!
    O sistema de url amigável funciona perfeitamente quanto ao back-end, mas tenho um “bug” com o front. Depois de estruturar a index via css, fui fazer as outras páginas, porém a index carrega “junto” com essas páginas, minha index fica abaixo do conteúdo da página de noticias por exemplo…
    Não achei nada relacionado à isso, você sabe o que poderia ser?

    Grato.

Deixe uma resposta para Juan Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *