Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

vinicvo

Reescrever URL

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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	

$valor = isset($_GET['valor']) ? $_GET['valor'] : '';
$grupo = isset($_GET['grupo']) ? $_GET['grupo'] : '';
$subgrupo = isset($_GET['subgrupo']) ? $_GET['subgrupo'] : '';
$subgrupo2 = isset($_GET['subgrupo2']) ? $_GET['subgrupo2'] : '';

echo '<p><strong>Valor:</strong> '.$valor.'</p>';
echo '<p><strong>Grupo:</strong> '.$grupo.'</p>';
echo '<p><strong>Subgrupo:</strong> '.$subgrupo.'</p>';
echo '<p><strong>Subgrupo 2:</strong> '.$subgrupo2.'</p>';
?>

 

 

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í... ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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