Quero redirecionar todo o tráfego para um único arquivo de gateway .php, esse arquivo fará a autenticação e usará ajax para extrair o arquivo que foi solicitado.
Então preciso de um .htaccess com fluxo assim:
if external request for any file
redirect (or rewrite) to /gateway.php
gateway.php precisaria então poder acessar o arquivo.
Este é o melhor que eu descobri:
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). Preciso adicionar uma exceção de alguma forma!
Qualquer ajuda seria muito apreciada!
Responder1
Você não precisa desse 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. Aí você diz que se for do localhost basta fazer a URL, ELSE faça o redirecionamento. Você pode estar sujeito a algum tipo de mecanismo de redirecionamento interno, talvez seja necessário configurar RewriteLog e RewriteLogLevel rapidamente para depurar as ações que o Apache está executando.