Я хочу перенаправить весь трафик в один файл шлюза .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 (из-за перенаправления). Мне нужно как-то добавить исключение!
Любая помощь будет принята с благодарностью!
Вам не нужна эта 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-адрес, ELSE выполните перенаправление. У вас может быть какой-то механизм внутреннего перенаправления, возможно, вам придется сразу же установить RewriteLog и RewriteLogLevel, чтобы отладить действия, предпринимаемые Apache.