htaccess перенаправляет все в один файл (кроме файла с localhost)

htaccess перенаправляет все в один файл (кроме файла с localhost)

Я хочу перенаправить весь трафик на один файл шлюза .php, этот файл будет выполнять аутентификацию и использовать ajax для извлечения запрошенного файла.

Итак, мне нужен .htaccess с таким потоком:

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

Затем gateway.php должен иметь доступ к файлу.

Это лучшее, что я придумал:

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]

Это работает, но когда ajax на gateway.php пытается получить контент с другой страницы, он получает контент с gateway.php (из-за редиректа). Мне нужно как-то добавить исключение!

Любая помощь будет высоко оценена!

решение1

Вам не нужен этот RewriteBase, попробуйте это:

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]

Сначала вы явно говорите, что если запрашивается gateway.php, остановитесь. Затем вы говорите, что если это с localhost, просто сделайте URL, ИНАЧЕ сделайте перенаправление. Вы можете быть подвержены какому-то внутреннему механизму перенаправления, вам, возможно, придется быстро настроить RewriteLog и RewriteLogLevel, чтобы отладить действия, предпринимаемые Apache.

Связанный контент