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.