Fórum Debian

Versão Completa: URL amigáveis - mod_rewrite
Você está atualmente visualizando uma versão simplificada do conteúdo. Visualizar a versão completa com formatação.
Estava vendo a série de vídeo aulas CRIANDO UM MINI-FRAMEWORK PHP 5 COM MVC do Matheus Moura e percebi que na terceira aula, o meu mod_rewrite não está funcionando corretamente.

Pela vídeo aula dele, ao acessar a url http://localhost/newaula/index/index/nome/matheus/sobrenome/moura/idade/xx é retornado um array (definido no método System::setParams()) assim:

Código PHP:
Array
(
    [
0] => index
    
[1] => index
    
[2] => nome
    
[3] => matheus
    
[4] => sobrenome
    
[5] => moura
    
[6] => idade
    
[7] => xx


A explicação dessa parte está na vídeo aula 3, por volta do 21 minutos => http://www.videoaulasbrasil.com.br/php/c...3-parte-3/

Alguns métodos da classe System:
Código PHP:
private function setUrl(){
    
$_GET['url'] = (isset($_GET['url']) ? $_GET['url'] : 'index/index_action');
    
$this->_url $_GET['url'] .'/' ;
}

private function 
setExplode(){
    
$this->_explode explode'/' $this->_url );
}

private function 
setController(){
    
$this->_controller $this->_explode[0];
}

private function 
setAction(){
    
$ac = (!isset($this->_explode[1]) || $this->_explode[1] == null || $this->_explode[1] == 'index' 'index_action' $this->_explode[1]);
    
$this->_action $ac;
}

private function 
setParams(){
  
print_r($this->_explode);


Vejam que o método System::setUrl() faz a verificação se o GET['url'] definido no .htaccess:

Código:
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1

Caso não exista o GET['url'] é definido um valor padrão index/index_action é exatamente esse valor que eu recebo quando é executo o método System::setParams()... Ou seja, ele não está lendo na index o valor GET['url'].

Meu retorno:
Código PHP:
Array
(
    [
0] => index
    
[1] => index_action
    
[2] => 


Testei o mesmo código no Windows e no Arch Linux e ambos deram certo.

Os códigos podem ser baixados na aula 5 - http://www.videoaulasbrasil.com.br/php/c...c-parte-5/ -> http://www.megaupload.com/?d=QH5Y8NDK

Se alguém souber como me ajudar, ou ao menos testar os código na máquina de você para verem se funciona o código de acordo com a vídeo aula.

Ahh, o phpinfo() retorna que o mod_rewrite está habilitado.

Obrigado!
Amigos, ainda não consegui resolver o problema... Indeciso Ninguém tem alguma ideia do que seja, ou possa ter testado o código para ver se o problema é só aqui?

Para dar uma simplificada para vocês entenderem melhor:

index.php
Código PHP:
<?php
    
echo "Result: ";
    
print_r($_REQUEST);
?>

.htaccess
Código:
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1

Se eu acessar http://localhost/teste/ é retornado o seguinte:
Citar:Result: Array ( )

Se eu acessar http://localhost/teste/sistema/linux é retornado:
Citar:Result: Array ( [url] => sistema/linux )

Mas de acordo com a vídeo aula, se eu acessar: http://localhost/teste/index/index/sistema/linux deveria ser retornado:
Citar:Result: Array ( [url] => index/index/sistema/linux )

Mas é retornado um array vazio, ou seja, url definido não está sendo passado para a index.

Alguém poderia me ajudar?

Obs.: Desculpe-me floodar para subir o tópico... Anjo
To dando uma olhada, ja posto uma ajuda
URL de Referência