Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
As urls estão assim atualmente:
http://www.meusite.com.br/paginas.php?id=23titulo=prad
estou tentando deixar assim:
http://www.meusite.com.br/prad
o htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/([a-z0-9-]+)/?$ /paginas.php?id=$2&titulo=$1 [NC,L]
</IfModule>
mas não esta funcionando, onde estou errando?
Agradeço ajuda
Não vai precisar exibir o id, possivel?
Sugiro montar as rotas no PHP, não no .htaccess.
Veja: http://rberaldo.com.br/urls-amigaveis-sem-htaccess-usando-slim/
Obrigada pela indicação Beraldo e como fazer isso no htaccess mesmo? Preciso aprender
Deu pra ter uma noção com esse artigo
A sua regra só tem um grupo (caracteres entre parênteses). Logo, não faz sentido usar $2, apenas $1 estará disponível
Tente isto:
RewriteRule ^/([a-z0-9-]+)/?$ /paginas.php?titulo=$1 [NC,L]
pensei que, mesmo que não fizesse parte de algum grupo, fosse necessario colocar os grupos no lado direito, pois tem informação que é passada pelo id, pra depois pegar com GET[$id]
>
Tente isto:
RewriteRule ^/([a-z0-9-]+)/?$ /paginas.php?titulo=$1 [NC,L]
Não funcionou
Tira a barra do final
tentei
-
RewriteRule ^/([a-z0-9-]+)$ /paginas.php?titulo=$1 [NC,L]
e
-
RewriteRule ^([a-z0-9-]+)$ /paginas.php?titulo=$1 [NC,L]
sem resultado
testa isso
coloca antes das regras
RewriteBase /
e testa sem as barras
se for ter barras tem que escapa-las com barra invertida
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^/([a-z0-9-]+)$ /paginas.php?titulo=$1 [NC]
</IfModule>
fiz assim e ainda nada
tira a primeira barra
ou escapa essa com barra invertida
tentei das duas formas e nada também
tentei das duas formas e nada também
mas como você esta digitando no navegador?
clico em um botão qualquer da lista na página lista.php:
<a href="paginas.php?id=<?php echo $value['id'] ?>titulo=<?php echo $value['titulo'] ?>" class="btn btn-primary" role="button">ver</a>
ai na pagina que abre na url retorna por exemplo
Antes de fazer o htaccess vc tem que definir como a url amigavel vai ser
quais os parametros vai passar?
olha o que vc disse
meusite.com.br/prad <- como vc vai seber o ID conteudo?
>
As urls estão assim atualmente:
http://www.meusite.com.br/paginas.php?id=23titulo=prad
estou tentando deixar assim:
Acho que da para fazer sem exibir o id na url, mesmo ele estando ali.
Penso que a url amigavel é apenas uma forma de exibição que o apache vai fazer, mas no php mesmo o id estará na url
acho que você ta confundindo
tem que passar o ID sim, como você disse ele estara na url
e é aqui que você usaria sua url amigavel e você nao esta usando
<a href="/titulo/<?php echo $value['id'] ?>" class="btn btn-primary" role="button">ver</a>
da uma lida
http://wbruno.com.br/php/desmistificando-urls-amigaveis-com-php-e-htaccessapache/
mas se eu coloco somente
<a href="<?php echo $value['titulo'] ?>" class="btn btn-primary" role="button">ver</a>
fala que a pagina não existe, mas nesse caso como vai passar o id para o url?
Pois com o id da url, no paginas.php estou usando o GET[$id] para um select no db assim consigo imprimir o conteudo do id solicitado na página
>
mas se eu coloco somente
<a href="<?php echo $value['titulo'] ?>" class="btn btn-primary" role="button">ver</a>
fala que a pagina não existe, mas nesse caso como vai passar o id para o url?
Pois com o id da url, no paginas.php estou usando o GET[$id] para um select no db assim consigo imprimir o conteudo do id solicitado na página
tem que ter a barra no começo
você esta fazendo o contrario
o que você coloca dentro do href que é a url amigavel, é o que vai aparecer no navegador, e é apartir dela que você cria a regra htaccess
o que você digita ou clica é
meusite.com/livros/suspense/pagina-3/
mas o servidor reescreve
meusite.com/livros.php?categoria=suspense&pagina=
.htaccess
RewriteEngine on
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Options All -Indexes
DirectoryIndex index.php
RewriteRule ^(.*)$ index.php?pagina=$1
index.php
<?php
$get = (isset($_GET['pagina'])) ? $_GET['pagina'] : null;
$pagina_url = explode('/', $get);
//aqui você vai poder filtrar tudo que vem da url, exemplo:
//
//www.site.com.br/parametro-1/parametro-2/parametro-3/parametro-4
//
//o legal desse método, é que vc poderá colocar quantos parâmetros quiser
//corresponde ao "parametro-1"
if(isset($pagina_url[0])){
//faz o que precisa ser feito
}elseif(isset($pagina_url[1])){//corresponde ao "parametro-2"
//faz o que precisa ser feito
}else{//corresponde a nenhum parâmetro na url
//faz o que precisa ser feito, caso não tenha nada na url
}
http://www.meusite.com.br/prad
como vai ficar o ID?