Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal. Eu estou trabalhando no desenvolvimento de um site e de repente surgiu a necessidade de "esconder" a URL da página acessada.
Eu então tentei de várias formas e tive alguns resultados, porém, o que acontece é que a minha URL tem duas regras das quais eu não consigo fugir, e dessa forma, eu não consegui adaptar essas regras no meu arquivo .htaccess.
No meu site a url é dividida em seções, da seguinte forma:
index.php?acao=funcionario/cadastro
Ou, de forma mais geral:
index.php?acao=grupo/subgrupo
A minha ideia inicial era reescrever a url para que ela aparecesse na forma: index.php/grupo/subgrupo. Isso foi facilmente obtido. O problema agora é o seguinte: eu tenho um terceiro subgrupo na URL, que é opcional. E tenho também uma outra variável GET opcional. Dessa forma a url geral seria:
index.php?acao=grupo/subgrupo/subsubgrupo&variavel1=valor
Pois então pessoal, eu gostaria de reescrever a url para que ela fique da seguinte forma:
index.php/valor/grupo/subgrupo/subsubgrupo.
Eu até consegui fazer, porém quando eu não tenho o terceiro parâmetro (subsubgrupo), dá um erro, e esse mesmo erro acontece quando eu não tenho a variável1. Sendo assim, eu gostaria de pedir a vocês que me ajudassem, me dessem uma luz para tratar parâmetros opcionais no htaccess.
Desde já, agradeço a força.
Daew Vinícius,
eu fiz um exemplo aqui e deu certo... testa aí:
url do arquivo de testes: http://127.0.0.1/url/
Arquivo index.php:
<?php
//index.php/valor/grupo/subgrupo/subsubgrupo
//index.php?valor=$1&grupo=$2&subgrupo=$3&subgrupo2=$4
Arquivo .htaccess (no mesmo diretório do arquivo index.php):
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
EXEMPLO PARA ATENDER A ESSA SITUAÇÃO --> //index.php/valor/grupo/subgrupo/subsubgrupo
Neste exemplo, todos os valores são opcionais "?". Mas pode dar erro na página, caso o usuário retire uma barra "/" ou algum valor da url...
RewriteRule ^([a-z0-9-]+)/?([a-z0-9-]+)?/?([a-z0-9-]+)?/?([a-z0-9-]+)?/?$ /url/index.php?valor=$1&grupo=$2&subgrupo=$3&subgrupo2=$4 [NC]OU PODE FAZER COM VÁRIOS COMANDOS (DESCOMENTE PARA TESTAR)
#RewriteRule ^([a-z0-9-]+)/?$ /url/index.php?valor=$1 [NC] #RewriteRule ^([a-z0-9-]+)/([a-z0-9-]+)/?$ /url/index.php?valor=$1&grupo=$2 [NC] #RewriteRule ^([a-z0-9-]+)/([a-z0-9-]+)/([a-z0-9-]+)/?([a-z0-9-]+)?/?$ /url/index.php?valor=$1&grupo=$2&subgrupo=$3&subgrupo2=$4 [NC] </IfModule>O código está bem simples... mas acho que dá pra entender sem problemas... mas qualquer coisa dê um toque aí... ;)