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 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
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
×

Informação importante

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