Ir para conteúdo
TUAN

URL AMIGAVÉL

Recommended Posts

Ola boa tarde a todos 

Poderia me dar uma ajuda se for possível

teria uma maneira de colocar url amigavél simples que funciona apenas em um dos arquivos

por ex:

eu tenho um arquivos recebe todos os dados do banco de dados sendo ele uma pagina diferenciadas para clientes

e tenho outro arquivo que faz as buscas no banco de dados para direcionar para o arquivos que receber todos os dados do banco

tenho o arquivo buscar.php este que traz a pesquisa feita 

e tenho o arquivos noticia.php  este mostra todos os conteudos do banco cadastrado por id

ou seja este arquivo mostrar ele esta aparecendo dessa forma

site.net/noticias/noticia.php?id=200

e eu quero que ele possa aparecer mais o menos assim

site.net/noticias/200/nome-da-noticia



<?php
//ARQUIVO buscar.php
//ESTE QUE FAZ TODAS AS BUSCAS NO BANCO DE DADOS MOSTRANDO PARA OS CLIENTE E MOSTRANDO UM LINK PARA VISUALIZAR TODOS OS CONTEUDO

$host = 'localhost';

$user = 'root';

$pass = '';

$db   = 'news_2018';


$noticias = $_POST['noticias'];
$con = mysqlI_connect($host, $user, $pass, $db);



$sql = "SELECT* FROM noticias WHERE titulo LIKE '%$noticias%' OR descricao LIKE '%$noticias%'OR data LIKE '%$noticias%'OR id_categoria LIKE '%$noticias%'order by DESC LIMIT 100";
$res = mysqli_query($con, $sql);
while ($dados = mysqli_fetch_array($res)) {

?>

<!-- ESTE AQUI É O QUE LINK PARA O ARQUIVO noticia.PHP onde mostra todo os conteudos
-->
<div class="btn-group btn-group">
  <a href="noticias/noticia.php?id=<?php echo $dados["id"];?>" target="_blank" class="btn btn-success btn-sm">Mostra mais...</a>

ESTE É O CÓDIGO DA noticia

<?php
// ESTE É O ARQUIVO QUE MOSTRA TODAS AS NOTICIAS DA PAGINA OU SEJA A NOTICIA DETALHADA EX: site.net/noticias/noticia.php?id=200
// QUANDO CLICAR NO LINK PARA ENTRA NESTA PAGINA ELA APARECER ASSIM EX: site.net/noticias/200/nome-da-noticia   ou mostra apenas assim site.net/noticias/nome-da-noticia

    require_once 'database/conexao.class.php';
    require_once 'database/crud.class.php';

    $con = new conexao(); // instancia classe de conxao
    $con->connect(); // abre conexao com o banco
    @$getId = $_GET['id'];  //pega id para ediçao caso exista
    if(@$getId){ //se existir recupera os dados e tras os campos preenchidos
        $consulta = mysql_query("SELECT * FROM noticias WHERE id = + $getId");
        $dados = mysql_fetch_array($consulta);

//Busca na tabela o numero de vezes que a página ja foi visitada
$busca = "Select * FROM noticias WHERE id = {$getId}";
$exe = mysql_query($busca);

$resultado = (mysql_fetch_array($exe));

//Pega o numero de visistas que consta na tabela, adiciona mais um e atualiza
$visitantes = $resultado['visitas'] + 1;
$altera = "UPDATE noticias SET visitas = '{$visitantes}' WHERE id = '{$getId}'";
$exe1 = mysql_query($altera);

//Faz uma nova busca e retorna o numero de visitas depois da atualização
$exe = mysql_query($busca);
$total = (mysql_fetch_array($exe));
$visitas = $total['visitas'];

    }

?>

Eu já olhe alguns tutorial de url mais eu não consegui fazer ela funcionar

 e só me falta isso para eu finalizar o meu projeto aqui

se puderem me ajudar ai ficarei muito grato e se puder tbm me mostrar de como fazer bem detalhado onde vai cada coisa pra não precisar eu ficar aqui pedindo a todos pra me ajudarem

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Maurinho26 Bom dia! Maninho eu peguei este aqui na net só que não estou sabendo como fazer ele funcionar certo quando clicar e gerar a url

 

Este é o HTACCESS

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

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

#-------------------------------------------------------------------
# URL AMIGAVEL
#-------------------------------------------------------------------
RewriteRule ^noticia\/?([0-9]+)\/?(.+)\/?$ noticia.php?titulo=$1

Este é o código

 

esta do mesmo jeito que peguei ele 

<?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, '-'));
    }

    $titulo='Conheça as diferenças entre os processadores da sétima geração da Intel';
    echo "
        <a href='/noticia/".encodeSEOString($titulo).".'>ABRIR NOTICIA</a>;
    "
    ;
 ?>

       ele que não estou conseguindo fazer ele aparecer a url quando clico nela para abrir as noticias que esta todas pelo id

Compartilhar este post


Link para o post
Compartilhar em outros sites

O primeiro ponto é verificar se o .htaccess está funcionando corretamente. Apague todo o conteúdo do arquivo e escreva qualquer coisa nele (caracteres aleatórios). Se ocorrer o erro 500, está tudo certo. Se não acontecer nada, o arquivo não está sendo interpretado.

 

Na parte de regras, esta regra é abrangente demais:

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

E ele acaba não indo para a segunda regra.

 

Inverta a ordem e adicione [L] no final da regra para que não continue lendo as regras adiante:

#-------------------------------------------------------------------
# URL AMIGAVEL
#-------------------------------------------------------------------
RewriteRule ^noticia\/?([0-9]+)\/?(.+)\/?$ noticia.php?titulo=$1 [L]

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Gabriel Heming Boa tarde obrigado ai, 

Mas deixa te falar nesta pagina onde que vai ser trocada url  noticia.php?id=200 precisa por alguma dentro do <?php ?

ou ter que mudar ou não precisa

<?php
// ESTE É O ARQUIVO QUE MOSTRA TODAS AS NOTICIAS DA PAGINA OU SEJA A NOTICIA DETALHADA EX: site.net/noticias/noticia.php?id=200
// QUANDO CLICAR NO LINK PARA ENTRA NESTA PAGINA ELA APARECER ASSIM EX: site.net/noticias/200/nome-da-noticia   ou mostra apenas assim site.net/noticias/nome-da-noticia

    require_once 'database/conexao.class.php';
    require_once 'database/crud.class.php';

    $con = new conexao(); // instancia classe de conxao
    $con->connect(); // abre conexao com o banco
    @$getId = $_GET['id'];  //pega id para ediçao caso exista
    if(@$getId){ //se existir recupera os dados e tras os campos preenchidos
        $consulta = mysql_query("SELECT * FROM noticias WHERE id = + $getId");
        $dados = mysql_fetch_array($consulta);

//Busca na tabela o numero de vezes que a página ja foi visitada
$busca = "Select * FROM noticias WHERE id = {$getId}";
$exe = mysql_query($busca);

$resultado = (mysql_fetch_array($exe));

//Pega o numero de visistas que consta na tabela, adiciona mais um e atualiza
$visitantes = $resultado['visitas'] + 1;
$altera = "UPDATE noticias SET visitas = '{$visitantes}' WHERE id = '{$getId}'";
$exe1 = mysql_query($altera);

//Faz uma nova busca e retorna o numero de visitas depois da atualização
$exe = mysql_query($busca);
$total = (mysql_fetch_array($exe));
$visitas = $total['visitas'];

    }

?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O modo como o PHP recebe a informação não precisa mudar. Apenas os links.

 

Nesse seu script em específico, tem que mudar a conexão, pois, as funções mysql_* foram descontinuadas e removidas do PHP. Substitua por MySQLi ou PDO.

 

Além disso, usar @ para suprimir erros não é uma boa prática.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim. Se você quer verificar se o atributo veio através do $_GET, use isset ou filter_has_var

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Paulo Oliveira Albuquerque
      Ola bom dia galera  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
    • Por Paulo Oliveira Albuquerque
      Ola galera boa noite 
      sou novo aqui e sou bem nub em php e msqli e pdo
      Porem tenho uma url amigavél que funciona para mim perfeita mente sem problemas
      Bom porém quero que ela seja bloqueadas algumas funções por ex: meudominio.com/pasta/produdos/128/computadores-lc
      Entre este meudominio.com/pasta/produdos/128/computadores-lc   quero que meu htaccess ele não deixa por nada entre o meudominio.com/pasta/produdos/128/computadores-lc-alguma-coisa
      ou meudominio.com/pasta/produdos.php?id=128
      quero que ele apenas reconhecer o link direncionado pela url qu seja este aqui meudominio.com/pasta/produdos/128/computadores-lc nada mais
      se alguem tentar por alguma coisa fora desta url ele direciona para o index principal ou motre erro dentro da quela pagina que esta fora da url amigavel
      Ou seja tudos que estiver o ex: meudominio.com/sobre.php
      ele apenas gere o meudominio.com/sobre    sem que ele aceite o .php ou outra outra coisa fora do que esta sendo chamo pelo htaccess ou pela url
      em meus arquivos esta assim a minha url.php
       
      <?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, '-')); } ; ?> 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 ^produto\/?([0-9]+)\/?(.+)\/?$ produto.php?id=$1 RewriteRule ^sobre\/?([a-z]+)\/?(.+)\/?$ sobre.php RewriteRule ^index\/?([a-z]+)\/?(.+)\/?$ index.php  Na minha url que faz a chamad para o direcionamento esta assim
      <div class="hover-text lis-absolute lis-right-20 lis-bottom-20 lis-font-roboto text-white text-right"> <span class="text-white mb-0"><a href="<?php echo ConfigPainel('site_url'); ?>/produtos/<?php echo $id; ?>/<?php echo encodeSEOString($produtos); ?>" target="_blank" title="Clique para ver detalhes"><strong><font color="#fff"><?php echo $produtos; ?></a></font></strong></span></br><span class="lis-font-roboto"><a href="<?php echo ConfigPainel('site_url'); ?>/produtos/<?php echo $id; ?>/<?php echo encodeSEOString($produtos); ?>" target="_blank" title="Clique para ver detalhes"><font color="#fff" size="2"><?php echo VerificaCategoriaItem($dados['id_categoria'],'c_categoria'); ?></font></a></span></div>    Espero que eu possa ter sido bem detalhado ai para que todos possam ver o que eu quero..
    • Por Paulo Oliveira Albuquerque
      Ola galera boa noite 
      sou novo aqui e sou bem nub em php e msqli e pdo
      Porem tenho uma url amigavél que funciona para mim perfeita mente sem problemas
      Bom porém quero que ela seja bloqueadas algumas funções por ex: meudominio.com/pasta/produdos/128/computadores-lc
      Entre este meudominio.com/pasta/produdos/128/computadores-lc   quero que meu htaccess ele não deixa por nada entre o meudominio.com/pasta/produdos/128/computadores-lc-alguma-coisa
      ou meudominio.com/pasta/produdos.php?id=128
      quero que ele apenas reconhecer o link direncionado pela url qu seja este aqui meudominio.com/pasta/produdos/128/computadores-lc nada mais
      se alguem tentar por alguma coisa fora desta url ele direciona para o index principal ou motre erro dentro da quela pagina que esta fora da url amigavel
      Ou seja tudos que estiver o ex: meudominio.com/sobre.php
      ele apenas gere o meudominio.com/sobre    sem que ele aceite o .php ou outra outra coisa fora do que esta sendo chamo pelo htaccess ou pela url
      em meus arquivos esta assim a minha url.php
       
      <?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, '-')); } ; ?> 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 ^produto\/?([0-9]+)\/?(.+)\/?$ produto.php?id=$1 RewriteRule ^sobre\/?([a-z]+)\/?(.+)\/?$ sobre.php RewriteRule ^index\/?([a-z]+)\/?(.+)\/?$ index.php  Na minha url que faz a chamad para o direcionamento esta assim
      <div class="hover-text lis-absolute lis-right-20 lis-bottom-20 lis-font-roboto text-white text-right"> <span class="text-white mb-0"><a href="<?php echo ConfigPainel('site_url'); ?>/produtos/<?php echo $id; ?>/<?php echo encodeSEOString($produtos); ?>" target="_blank" title="Clique para ver detalhes"><strong><font color="#fff"><?php echo $produtos; ?></a></font></strong></span></br><span class="lis-font-roboto"><a href="<?php echo ConfigPainel('site_url'); ?>/produtos/<?php echo $id; ?>/<?php echo encodeSEOString($produtos); ?>" target="_blank" title="Clique para ver detalhes"><font color="#fff" size="2"><?php echo VerificaCategoriaItem($dados['id_categoria'],'c_categoria'); ?></font></a></span></div>    Espero que eu possa ter sido bem detalhado ai para que todos possam ver o que eu quero..
    • Por Danilo CS
      Olá!
      Eu estou com uma enorme dúvida, e pode ser a razão de um grande problema de meu site. Eu vou contar a história resumidamente:
       
      Até 2017 o meu site chegou a alcançar uns 10 mil views na pesquisa do Google. Esperando aumentar os cliques e, para facilitar a manutenção, resolvi fazer uma reforma geral em meu site. Só que para isso foi necessário tornar as urls amigáveis.
       
      Passou-se 1 ano da reforma e até agora não consegui alcançar os resultados anteriores. Pesquisando ali e aqui, um colega me mostrou um site que busca conteúdos duplicados. E este site aponta duplicidade com o meu próprio site e o mesmo link. Pelo que eu entendi, url´s amigáveis podem ser consideradas como páginas duplicadas já que se pode escrever a mesma página com urls diferentes.
       
      Em meu .htaccess descobri que é esta linha que causa tudo isso, porém é o que faz o site inteiro funcionar:
      RewriteRule ^(.*)$ $1.php Porém, se eu copiar e colar um pedaço do texto diretamente na barra do Google, ele só encontra 1 página.
       
      Portanto, será que eu devo me preocupar com o resultado daquele site? Será que existe algum jeito de resolver isso?
       
      O link que faço o teste é esse: http://www.superdanilof1page.com.br/index.php
       
      O site que acusa duplicidade é esse: https://copywritely.com/
       
      Obrigaduuus
    • Por DAJSP83
      Galera estou com o seguinte problema
      preciso personalizar a url http://localhost/site/index.php?categoria=49 para http://localhost/site/categoria/nomedacategoria
      já tentei 
      RewriteEngine On
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^([a-zA-Z0-9_-]+)$ categoria.php?categoria=$1 [R=301,L] 
       
      entre outros
       
      não roda no xampp e nem na kinghost
      Já habilitei no apache, mas não roda de maneira alguma
      Alguém poderia me dar um help?
      Alguma solução?
×

Informação importante

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