htaccess redirige todo a un archivo (excepto desde localhost)

htaccess redirige todo a un archivo (excepto desde localhost)

Quiero redirigir todo el tráfico a un único archivo de puerta de enlace .php, este archivo realizará la autenticación y utilizará ajax para extraer el archivo solicitado.

Entonces necesito un .htaccess con un flujo como este:

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

gateway.php entonces necesitaría poder acceder al archivo.

Esto es lo mejor que se me ocurrió es:

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]

Esto funciona, pero cuando el ajax en gateway.php intenta obtener el contenido de otra página, obtiene el contenido de gateway.php (debido a la redirección). ¡Necesito agregar una excepción de alguna manera!

¡Cualquier ayuda sería muy apreciada!

Respuesta1

No necesitas esa RewriteBase allí, prueba esto:

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]

Primero, dice explícitamente que si se solicita gateway.php, deténgase. Luego dices que si es de localhost simplemente haz la URL, DE LO CONTRARIO haz la redirección. Es posible que esté sujeto a algún tipo de mecanismo de redireccionamiento interno, es posible que deba configurar RewriteLog y RewriteLogLevel rápidamente para depurar las acciones que está tomando Apache.

información relacionada