Ir para conteúdo

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
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por ILR master
      Boa tarde pessoal, tudo bem ?
       
      Eu uso o tinymce para cadastro de textos no meu siite, porém, quero fazer um sistema para que os colunistas possam fazer o próprio post.
      O problema do tinymce, é que ele mantém a formatação do texto copiado, como tamanho de fonts, negritos, etc... Quero que o usuário cole o texto e a própria textarea limpe a formatação para que ele formate como quiser.
       
      A pergunta é:
       
      O tinymce tem uma opção para desabilitar a formatação quando um texto é colocado?
      Tem alguma função via java ou php para retirar a formatação assim que o texto é colado?
      Ou é melhor usar um outro editor?
       
      Agradeço deste já.
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por ILR master
      Fala pessoal.
       
      Seguinte:
       
      Quero selecionar duas tabelas e mostrar com resultados intercalados. Abaixo segue um código explicando para vcs terem uma ideia.
       
      $consulta = "SELECT A.*, B.* FROM tabela1 A, tabela2 B'";
      $resultado = mysqli_query($conexao, $consulta) or die ("erro");
      while($busca = mysqli_fetch_array($resultado)){
       
      print $busca['cod_evento']; --> traz o código da tabela1 
      print $busca['titulo_evento']; -->  traz o titulo da tabela1
      print $busca['cod_noticia']; --> traz o código da tabela2
      print $busca['titulo_noticia']; --> traz o tituloda tabela2
       
      }
       
      Espero que entendam. Grato
       
×

Informação importante

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