htaccess redireciona tudo para um arquivo (exceto do localhost)

4

Eu quero redirecionar todo o tráfego para um único arquivo de gateway .php, esse arquivo fará autenticação e usará ajax para puxar o arquivo que foi solicitado.

Então, eu preciso de um .htaccess com fluxo como este:

if external request for any file
redirect (or rewrite) to /gateway.php

O gateway.php precisaria então poder acessar o arquivo.

Este é o melhor que eu penso é:

RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1
RewriteCond %{REQUEST_URI} !/gateway\.php$  
RewriteRule .* http://www.website.com/gateway.php?req=%{REQUEST_URI} [R=302,L]

Isso está funcionando, mas quando o ajax no gateway.php tenta obter o conteúdo de outra página, ele obtém o conteúdo do gateway.php (por causa do redirecionamento). Eu preciso adicionar uma exceção de alguma forma!

Qualquer ajuda seria muito apreciada!

    
por naunu 26.01.2010 / 02:11

1 resposta

3

Você não precisa do RewriteBase, tente isto:

RewriteEngine on
RewriteRule ^/gateway\.php$ - [L]
RewriteCond %{REMOTE_HOST} ^127\.0\.0\.1
RewriteRule ^(.*)$ - [L]
RewriteRule ^(.*)$ http://www.website.com/gateway.php?req=%{REQUEST_URI} [R=302,L]

Primeiro, você diz explicitamente que, se gateway.php for solicitado, pare. Então você diz que se é de localhost basta fazer o URL, ELSE faz o redirecionamento. Você pode estar sujeito a algum tipo de mecanismo de redirecionamento interno, você pode ter que configurar RewriteLog e RewriteLogLevel rapidamente para depurar as ações que o Apache está tomando.

    
por 26.01.2010 / 04:04