htaccess enigma mod_rewrite

3

Ok, então eu tenho esse arquivo .htaccess que contém isso

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php?p=%{REQUEST_URI}&%{QUERY_STRING} [L]
</IfModule>

O problema é que, no apache 2.2.22, o p e os outros objetos de consulta não aparecem, mas funciona muito bem no apache 2.4.2.

Então, basicamente no apache 2.2.22, ele apenas encaminha tudo para index.php, mas não possui nenhum objeto get .

Qualquer ajuda, obrigado.

Atualizar

Ok, então mudei a linha

RewriteRule . /index.php?p=%{REQUEST_URI}&%{QUERY_STRING} [L]

para

RewriteRule ^(.*) /index.php?p=$1 [L,QSA] E agora no apache 2.2.22, o p GET não passa, mas todas as consultas específicas que eu adiciono passam.

Então, se eu fizer

http://localhost/index/fun/buns/funds?man=woman

no 2.4.2 recebo

array (size=2)
  'p' => string 'index/fun/buns/funds' (length=20)
  'man' => string 'woman' (length=5)

e no 2.2.22 eu recebo

array(1) {
  ["man"]=>
  string(5) "woman"
}

Para ficar claro O que está acontecendo no 2.4.2 é o que eu quero, e o 2.2.22 não está cooperando.

Outra atualização Ok, então parece que o que está acontecendo é que quando eu faço / index / whatever, auto assume index.php, e ignora isso, ele adiciona automaticamente o .php a ele, quando eu não quero. Alguma idéia de como parar isso?

    
por Kelly Elton 25.06.2012 / 22:29

1 resposta

3

Necessário para adicionar -MultiViews ao arquivo httpd.conf.

    
por 25.06.2012 / 23:06