Ir para conteúdo

Arquivado

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

Jorge Francisco

[Resolvido] URL Amigáveis[]

Recommended Posts

Olá Pessoal,

 

Irei explicar com exemplos a minha duvida, eu tenho os seguintes códigos:

 

index.php

 

<?

	echo '<a href="teste.php/cadlivros/entrar">Cadastrar Livros</a>';

?>

teste.php

 

<?

	$url = explode('/', $_GET['opcao']);

	echo $url[0];

	echo $url[1];

	$url = explode('/', $_GET['acao']);

	echo $url[0];

	echo $url[1];

?>

index.php e teste.pho estão na mesma pasta e junto está o . htaccess, que está assim:

 

.htaccess

 

RewriteEngine on
RewriteRule ^([a-z,0-9,A-Z,_-]+)$ teste.php?opcao=$1&acao=$2

Só que não funciona, no que estou errando? No httpd.conf descomentei load rewrite..., tem que mudar algo mais?

 

Abraço,

Jorge Francisco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tu ja está passando o valor para as variáveis, não precisa o explode, somente $_GET['opcao'], $_GET['acao']... Faça um teste assim:

Vou te eXplicar um jeito mais fácil, e que não tem limite de variáveis que dá para passar:

 

.htaccess

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?key=$1

index.php

<?php
$key = explode("/", $_GET['key']);

echo "<pre>";
print_r($key);
echo "</pre>";
?>

Abrass

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá certo hahah, o abrass é de propósito :rolleyes:

Só não entendi tua dúvida, se quiser como teste.php é só renomear no .htaccess... funciona também.

Aqui um exemplo em funcionamento:

http://www.gotz.com.br/amigavel/ado/aado/c...no/seu/quadrado

 

Tem que verificar também se o mod_rewrite está habilita no servidor ok?

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hehehe. O exemplo é engraçado, ainda não consegui, até testei digitando:

 

http://localhost/test2/index.php/cadlivros/entrar

 

e colocando isto no index.php

 

<?
$url = explode('/', $_GET['opcao']);

	echo $url[0];

	echo $url[1];

	$url = explode('/', $_GET['acao']);

	echo $url[0];

	echo $url[1];
?>

e assim no .htaccess

 

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([a-zA-Z]+)?\/([a-zA-Z]+)?\/\/? index.php?opcao=$1&acao=$1

Mas até agora nada, até onde pude entender tem que descomentar SOMENTE a linha "LoadModule rewrite_module modules/mod_rewrite.so" e reiniciar o Apache,e pronto. Mas como não funciona,hehehe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

fui no phpinfo() e vi que o mod_rewrite realmente foi carregado, mas qualquer expressão regular que coloque não dá certo, alguém tem um teste genérico para que não importando a expressão retorne por GET algum parametro?

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvi, era só mudar isto:

 

#
	# AllowOverride controls what directives may be placed in .htaccess files.
	# It can be "All", "None", or any combination of the keywords:
	#   Options FileInfo AuthConfig Limit
	#
	AllowOverride all

	#
	# Controls who can get stuff from this server.
	#
	Order deny,allow
	Allow from all

Ou seja, colocar "all", e "allow from all", mas desconfio de que não está seguro, vou estudar mais.

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.