Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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:
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 :)
ValeuuuRewriteRule ^home\/([a-z,0-9,A-Z,_-]+)$ home/home-artigo.php?home_slug=$1 [NC]
>
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 :)
Deu certo em.....muito obrigado....
Agora eu tenho que fazer isso em todos os outros links hehehe
Então está dando tudo certo, mas estou com um probleminha....
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?
Eu acho que é só trocar o primeiro [NC] por [NC,OR]
Testa aí pra ver
Eu tentei o que você falou mas ai da erro 500 interno, tanto com [NC,OR] ou [OR] =\
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.
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?
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
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
E você tem a regra
#RewriteRule ^pilotos/pilotos-de-formula-1-stoffel-vandoorne pilotos/pilotos-de-formula-1-stoffel-vandoorne.php [NC,QSA,L]
?
>
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
O caminho está errado no meu exemplo pois se existe um diretório pilotos é dentro dele que vai o .htaccess e a regra seria somente com o nome do arquivo sem o pilotos na frente
No caso....um htaccess na pasta pilotos???
>
Agora, Danilo CS disse:
No caso....um htaccess na pasta pilotos???
isso mesmo
>
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)
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
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
Existe um RedirectMatch para ser usado tipo assim:
RedirectMatch ^/images/(.*)$ http://images.example.com/$1
Talvez isso ajude fazer de várias páginas usado do jeito certo.
>
1 hora atrás, Kosonome disse:
Existe um RedirectMatch para ser usado tipo assim:
RedirectMatch ^/images/(.*)$ http://images.example.com/$1
Talvez isso ajude fazer de várias páginas usado do jeito certo.
Vamos ver se eu entendi....
Tudo que tiver na pasta Images...vai ser redirecionado para aquela URL a direita certo?
Mas ai tem que fazer linha por linha de pagina por página ou essa string vai ler os arquivos?
Não sou muito bom com expressão regular e configuração de Apache, mas algo parecido com isso talvez funcione:
RedirectMatch ^(.*).php$ http://dominio.com.br/$1
Eu sou menos ainda!! Hehehe
Mas eu vou tentar....
Tomara que dê né? :)
eu fiz assim, mas dá erro de redirecionamento:
RedirectMatch ^(.*).php$ http://www.superdanilof1page.com.br/$1
Achei aqui um StackOverflow: https://stackoverflow.com/questions/13222850/redirect-php-urls-to-urls-without-extension
A promessa é redirecionar e tirar o .php ao mesmo tempo.
RewriteEngine On
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