Ir para conteúdo

POWERED BY:

Arquivado

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

AlexandreHenrique

URL amigável

Recommended Posts

Olá amigos, estou trabalhando numa aplicação php e Mysql e preciso usar URL amigável.  Até consegui fazer isso, o problema é quando tento passar parâmetros via GET, não está dando certo!

Vou postar meu .htaccess e alguém,  dá uma luz onde devo mudar.

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ url.php?url=$1

 

Até adicionei a linha seguinte:

RewriteRule ^detalhes-([0-9]+)-?$  detalhes.php?i=$1 

Mas não deu certo. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola boa tarde galera eu quero aproveitar este post para ve se alguem poderia me dar uma ajuda na minha url amigavél,

Ela funciona de boa 

mais tenho dois problemas que esta me dando já dor de cabeça

1º - Quando abre o link da url ex: meusite.com/produtos/23/nome-produtos  se eu por algo  a mais na frente desta url ela aceita e eu gostaria que que ele não aceitasse nada mais além do que foi feito o chamado  se ele for apenas assim ex2:  meusite.com/produtos/23/nome-produtos que nela não aceita se digitar na frente em um navegador qualquer mais coisa ex3:  meusite.com/produtos/23/nome-produtos-novo-uyuy   e nem aceitar se alguem digitar ou mesmo tentar fazer isso  meusite.com/produtos/23/  ou isso aqui  meusite.com/produtos.php?id=23

 

2ª Minha Url amigavél quando ela e feito o shared em uma rede social quando eu clico dentro da rede social pra abrir a pagina ela esta vindo diferente do que foi postado ele aparece assim quando eu clico para abrir

 

meusite.com/pasta/produtos/23/nome-produtos /><!-- ==================================================================================================================================== --> <link rel=?fbclid=Mgsgs-swwfw-dwedwedwewf-wefwefwhgygygygjhjnjnjnjnjn#.HDHDHDHDJ-messenger

e as vezes assim

meusite.com/pasta/produtos/23/nome-produtos?fbclid=Mgsgs-swwfw-dwedwedwewf-wefwefwhgygygygjhjnjnjnjnjn#.HDHDHDHDJ-messenger

 

era pra ele aparecer assim quando clicar

meusite.com/produtos/23/nome-produtos 

 

No meu HTACCESS ESTA ASSIM

 

#-------------------------------------------------------------------
# PERMISSIONANDO REESCRITA
#-------------------------------------------------------------------
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f

#-------------------------------------------------------------------
# EXTENSAO PHP
#-------------------------------------------------------------------
RewriteRule ^(.*)$ $1.php

#-------------------------------------------------------------------
# URL AMIGAVEL
#-------------------------------------------------------------------
RewriteRule ^produtos\/?([0-9]+)\/?(.+)\/?$ produtos.php?id=$1
RewriteRule ^sobre\/?([a-z]+)\/?(.+)\/?$ sobre.php
RewriteRule ^index\/?([a-z]+)\/?(.+)\/?$ index.php
RewriteRule ^contato\/?([a-z]+)\/?(.+)\/?$ contato.php
RewriteRule ^buscar\/?([a-z]+)\/?(.+)\/?$ buscar.php

e a minha função esta assim

 

<?php
    //URL DEBUG CHARACTERS
    function encodeSEOString($string) {
        $string = preg_replace("`\[.*\]`U", "", $string);
        $string = preg_replace('`&(amp;)?#?[a-z0-9]+;`i', '-', $string);
        $string = htmlentities($string, ENT_COMPAT, 'utf-8');
        $string = preg_replace("`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig|quot|rsquo);`i", "\\1", $string);
        $string = preg_replace(array("`[^a-z0-9]`i", "`[-]+`"), "-", $string);
        return strtolower(trim($string, '-'));
    }
    ;
 ?>

Meu link pra abrir a pagina esta assim

 

 <a href="meusite.com/pasta/produto/<?php echo $id; ?>/<?php echo encodeSEOString($prod_nome); ?>">Listar</a>

Obs: como eu disse ela abre normal sem problemas o unico problema que estou tendo foi as que eu sitei ai em cima

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      No código abaixo, funciona perfeitamente quando chamo: dominio.com.br/noticia/todas
       
      <?php
          $url = (isset($_GET['url'])) ? $_GET['url'] : 'principal';
          $url = array_filter(explode('/', $url));
          //var_dump($url);
          $file = $url[0] . '.php';
          if (is_file($file)) {
              include $file;
          } else {
              include '404.php';
          }
          ?>
       
      Porém, quero usar variáveis com ? e &, tipo: dominio.com.br/busca/?campo=assunto
       
      Como faço pra conseguir isso?
       
      Valeu!!!
    • Por Rafael_Ferreira
      Não consigo carregar a imagem do captcha do meu formulário. Foi testado com o xampp e easyphp. Também não carregou a imagem de outros captcha. 
       
       
    • Por daemon
      Tenho um site com mais de 50.000 notícias, queria gerar um sitemap.xml.

      Existe algo gratuito ? O site foi desenvolvido do zero.
    • Por daemon
      Tenho um site com mais de 50.000 notícias, queria gerar um sitemap.xml.

      Existe algo gratuito ? O site foi desenvolvido do zero.
    • Por luiz monteiro
      Olá, tudo bem?
       
      Estou melhorando meu conhecimento em php e mysql e, me deparei com o seguinte. A tabela da base de dados tem um campo do tipo varchar(8) o qual armazena números. Eu não posso alterar o tipo desse campo. O que preciso é fazer um select para retornar o números que contenham zeros a direita ou a esquerda.
      O que tentei até agora
       
      Ex1
      $busca = $conexao->prepare("select campo form tabela where (campo = :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form']);
       
      Se a direita da string $_REQUEST['campo_form'] termina ou inicia com zero ou zeros, a busca retorna vazio.
      Inseri dados numéricos, da seguinte maneira para testar: 01234567;  12345670: 12345678: 12340000... entre outros nessa coluna. Todos os valores que não terminam ou não iniciam com zero ou zeros, o select funciona.
       
       
      Ex2
      $busca = $conexao->prepare("select campo form tabela where (campo = 0340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex3
      $busca = $conexao->prepare("select campo form tabela where (campo = '02340001' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex4
      $busca = $conexao->prepare("select campo form tabela where (campo like 2340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex5
      $busca = $conexao->prepare("select campo form tabela where (campo like '12340000') ");
      Esse número está cadastrado, mas não retorna.
       
      Ex6
      $busca = $conexao->prepare("select campo form tabela where (campo like '"12340000"' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex7
      $busca = $conexao->prepare("select campo form tabela where (campo like :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form'])
      Não retorna dados.
       
      O  $_REQUEST['campo_form'] é envio via AJAX de um formulário. 
      Usei o gettype para verificar o post, e ele retorna string.
      Fiz uma busca com número 12345678 para verificar o que o select retorna, e também retrona como string.
       
      Esse tipo de varchar foi usado porque os números que serão gravados nesse campo,  terão zeros a direita ou na esquerda. Os tipos number do mysql não gravam zeros, então estou usando esse. O problema é a busca.
      Agradeço desde já.
       
       
×

Informação importante

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