Ir para conteúdo

POWERED BY:

Arquivado

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

Danilo CS

Ajuda Para ajustar essa regrinha de URL Amigável

Recommended Posts

Olá!

Queria uma forcinha num negócio aqui.

 

Eu quero fazer uma regrinha de URL amigável mas não está funcionando 100% como eu quero. Acredito que seja algo bobo...mas a verdade é que eu não consigo.

Muito bem... (nem tanto..hehe)

 

Eu quero que minha url seja assim > http://www.superdanilof1page.com.br/home/novidades

No entanto, eu não estou conseguindo, ela só funciona se faço se colocar uma "/" e escrever qualquer coisa ali depois de novidades, tipo "/abc"

 

Se eu colocar assim não funciona > http://www.superdanilof1page.com.br/home/novidades

Se eu colocar assim ou algo parecido funciona > http://www.superdanilof1page.com.br/home/novidades/abcndai

 

Regra do htaccess:

# Home
RewriteRule ^home\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)$ home/home-artigo.php?home_slug=$1 [NC]

PHP:

$home = strip_tags($_GET["home_slug"]);
$home_sql = mysql_query ("SELECT * FROM home WHERE home_slug='". $home . "' ");
$home_qr_s = mysql_num_rows($home_sql);
$home_qr_l = mysql_fetch_array($home_sql);
$home_id =  $home_qr_l['home_id'];
$home_slug =  $home_qr_l['home_slug'];

Como eu tenho milhares de páginas anexadas no Google, os links precisa funcionar exatamente como eu quero. É porque antes estava tudo em HTML e agora eu fiz os links em BD :)


Valeuuu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, eu sempre usei assim:


RewriteEngine on
RewriteRule ^login login.html [NC,QSA,L]
RewriteRule ^principal index.php [NC,QSA,L]
DirectoryIndex login.html
Options -Indexes

 

Não preciso colocar nada depois de "principal" para acessar o index.php ou de "login" para chamar o login.html

 

Nesse exemplo eu omiti as regras específicas para os arquivos .php funcionarem ao utilizar o método $_GET que seriam "RewriteCond %{REQUEST_FILENAME}\.php -f"
e "RewriteRule ^(.*)$ $1.php" mas acredito que para o que você quer já serve.

Compartilhar este post


Link para o post
Compartilhar em outros sites
RewriteRule ^home\/([a-z,0-9,A-Z,_-]+)$ home/home-artigo.php?home_slug=$1 [NC]

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, Sergio S. F. Pereira disse:

Bom dia, eu sempre usei assim:

 


RewriteEngine on
RewriteRule ^login login.html [NC,QSA,L]
RewriteRule ^principal index.php [NC,QSA,L]
DirectoryIndex login.html
Options -Indexes

 

 

Não preciso colocar nada depois de "principal" para acessar o index.php ou de "login" para chamar o login.html

 

Nesse exemplo eu omiti as regras específicas para os arquivos .php funcionarem ao utilizar o método $_GET que seriam "RewriteCond %{REQUEST_FILENAME}\.php -f"
e "RewriteRule ^(.*)$ $1.php" mas acredito que para o que você quer já serve.

 

Olá, bom dia!

Então, na verdade, eu ainda não entendo muito bem como funciona o htaccess, eu apenas faço igual aos conteúdos que encontro na internet. Mas não foi falta de tentar aprender não...mas enfim...

O início da regra eu fiz assim:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^superdanilof1page.com.br$ [OR]
RewriteCond %{HTTP_HOST} ^www.superdanilof1page.com.br$
RewriteRule ^home\/home\.php$ "http\:\/\/www\.superdanilof1page\.com\.br\/index\.php" [R=301,L]
RewriteCond %{HTTP_HOST} ^superdanilof1page.com.br
RewriteRule ^ http://www.superdanilof1page.com.br%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

E eu acho que essa dica do (*.).... eu acho que ja tentei também, mas eu vou tentar de novo também. Jaja eu falo no que deu :)

Mas ai para seguir a sua dica da regra do Rewrite precisa fazer a regra da parte de cima igual a que você falou também?

 

1 hora atrás, ESerra disse:

RewriteRule ^home\/([a-z,0-9,A-Z,_-]+)$ home/home-artigo.php?home_slug=$1 [NC]

 

 

Eu acho que já tentei assim...mas eu vou tentar de novo :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então está dando tudo certo, mas estou com um probleminha....

 

# equipes
RewriteRule ^equipes\/([a-z,0-9,A-Z,_-]+)$ equipes/equipes-da-formula-1-artigo.php?equipes_slug=$1 [NC]
RewriteRule ^equipes\/([a-z,0-9,A-Z,_-]+)$ equipes/equipes-historicas-de-formula-1-artigo.php?equipes_historicas_slug=$1 [NC]

Essa regrinha acima é para dois arquivos diferentes. Só que a de baixo não funciona, por causa da de cima. O que será que posso fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu nunca usei QUERY_STRING mas ao que tudo indica você vai precisar usar isto para dizer em quais condições deve redirecionar para determinada página.

18 horas atrás, Danilo CS disse:

Essa regrinha acima é para dois arquivos diferentes. Só que a de baixo não funciona, por causa da de cima. O que será que posso fazer?

Se a regra é para dois arquivos diferentes ela não pode ter o mesmo nome ^equipes

Você vai precisar de uma regra parecida com isto:


RewriteCond %{QUERY_STRING} ^equipes_slug=$1 [NC]
RewriteRule ^/equipes-da-formula-1-artigo$ /equipesf1/ [NC,L,R=301]

RewriteCond %{QUERY_STRING} ^equipes_historicas_slug=$1 [NC]
RewriteRule ^/equipes-historicas-de-formula-1-artigo$ /equipeshistf1/ [NC,L,R=301]

Onde equipesf1 é a url amigavel da primeira página e equipeshistf1 da segunda página. E também considerando que você já criou as urls amigavéis para estas páginas antes destas regras.

 

OBS: isto é só um exemplo pois eu não tenho como testar aqui essas regras.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu vou tentando ae...obrigado.

Eu notei que só de fazer para um ^equipes e para o outro ^equipess já resolveria.

 

Minha preocupação era mesmo com as páginas já indexadas pelo Google ou em outros sites. Fico com receio em ter que remar tudo de novo. No entanto surgiu uma outra questão que ainda não sei como resolver. Se não tiver jeito essa outra questão, a primeira (a que eu postei) nem vai ter muita importância. Daí daria para inventar qualquer outra coisa....sabe?

Compartilhar este post


Link para o post
Compartilhar em outros sites

E se você fizer um arquivo php para redirecionar para os outros arquivos php baseado na sua requisição? daí poderia usar o mesmo nome e, internamente, redirecionar baseado nos GET´s

A sua url amigável, segundo seu exemplo, vai ser equipes certo? daí faça com que equipes redirecione para um arquivo php chamdo redir_equipes.php por exemplo, e dentro dele pega os gets e redireciona com header(location) passando os mesmos gets de volta

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa!!

Então...foi isso que eu fiz (quer dizer foi o que eu tentei fazer), mas não deu certo.

Um exemplo:

Essa página está indexada com esse endereço:
http://www.superdanilof1page.com.br/pilotos/pilotos-de-formula-1-stoffel-vandoorne.php

E eu deixei essa mesma página assim:
http://www.superdanilof1page.com.br/pilotos/pilotos-de-formula-1-stoffel-vandoorne

 

Mas se clicar no link do Google vai retornar como página não existente! =\

 

A chamada eu fiz assim olha:

$piloto = strip_tags($_GET["piloto_slug"]);
$piloto_sql = mysql_query ("SELECT * FROM pilotos_f1 WHERE piloto_slug='". $piloto . "' ");

PS: Tanto para essa página "piloto" como para "equipes" eu fiz usando a mesma estrutura, apenas alterei os nomes :)

 

Pior que essa parte que você sugeriu eu já não sei como fazer :(

Citar

daí faça com que equipes redirecione para um arquivo php chamdo redir_equipes.php por exemplo, e dentro dele pega os gets e redireciona com header(location) passando os mesmos gets de volta

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 minuto atrás, Sergio S. F. Pereira disse:

E você tem a regra 

#RewriteRule ^pilotos/pilotos-de-formula-1-stoffel-vandoorne  pilotos/pilotos-de-formula-1-stoffel-vandoorne.php [NC,QSA,L]

 

?

 

Essa regra não....

Mas ai escreveria exatamente assim? É que eu coloquei la para testar eu não funcionou

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 minutos atrás, Sergio S. F. Pereira disse:

isso mesmo

 

Pelo menos o htaccess principal não ficaria tão pesado né!

Daria ter que fazer link por link, né?

 

Daria um trabalhinho, mas é melhor que perder tudo que já consegui indexar né!?!

 

(né né né...heheeh)

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desse jeito que passei por último funcionou para esta página ?

Se sim agora no .htacess da pasta pilotos você escreve as regras para todos os arquivos da pasta, igual você tava fazendo antes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Igual igual você sugeriu ainda não. Mas enquanto eu aguardava suas respostas eu só tinha tentado isso:

redirect 301 /pilotos/pilotos-de-formula-1-stoffel-vandoorne.php http://www.superdanilof1page.com.br/pilotos/pilotos-de-formula-1-stoffel-vandoorne

Obviamente assim deu, mas ai teria que fazer arquivo por arquivo...Isso seria a mesma coisa, ou não?

 

Eu criei um arquivo e coloquei lá. Mas por enquanto está dando erro externo 500

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 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á.
       
       
    • Por daemon
      Boa tarde,
       
      Eu tenho uma rotina que faz uma leitura do arquivo .xml de vários sites.

      Eu consigo pegar o tópico e a descrição, e mostrar a imagem que esta na pagina do link.
      Para isso utilizo esta função:
      function getPreviewImage($url) { // Obter o conteúdo da página $html = file_get_contents($url); // Criar um novo objeto DOMDocument $doc = new DOMDocument(); @$doc->loadHTML($html); // Procurar pela tag meta og:image $tags = $doc->getElementsByTagName('meta'); foreach ($tags as $tag) { if ($tag->getAttribute('property') == 'og:image') { return $tag->getAttribute('content'); } } // Se não encontrar og:image, procurar pela primeira imagem na página $tags = $doc->getElementsByTagName('img'); if ($tags->length > 0) { return $tags->item(0)->getAttribute('src'); } // Se não encontrar nenhuma imagem, retornar null return null; } // Uso: $url = "https://example.com/article"; $imageUrl = getPreviewImage($url); if ($imageUrl) { echo "<img src='$imageUrl' alt='Preview'>"; } else { echo "Nenhuma imagem encontrada"; }  
      Mas estou com um problema, esta funcão funciona quando coloco em uma pagina de teste.php. Preciso mostrar em uma página inicial diversas fotos de todos os links. (No caso acima só funciona 1).
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
×

Informação importante

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