Я хочу, чтобы все трафики c перенаправлялись с app.foo.bar.com на maintenance.foo.bar.com, кроме URL-адресов, содержащих строку api, ref / mail и track. php.
#maintenance routing RewriteCond %{REQUEST_URI} !api RewriteCond %{REQUEST_URI} !ref/mail RewriteCond %{REQUEST_URI} !track.php RewriteCond %{HTTP_HOST} ^(?:www\.)?(?:admin\.)?(?:app\.)?(.+)$ RewriteRule ^.*$ http://maintenance.%1/ [QSA,L] # basic framework routing RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
Это не работает.
Рабочий пример:
Пример URL: http://app.foo.bar.com/
http://app.foo.bar.com/
Результат: http://maintenance.foo.bar.com/
http://maintenance.foo.bar.com/
Пример не работает:
Пример URL: http://app.foo.bar.com/api/objects?token=foobarfoobarfoobar
http://app.foo.bar.com/api/objects?token=foobarfoobarfoobar
Результат: http://maintenance.foo.bar.com/?url=api/objects&token=foobarfoobarfoobar
http://maintenance.foo.bar.com/?url=api/objects&token=foobarfoobarfoobar
Что отсутствует или не так?
Мне пришлось добавить RewriteCond %{QUERY_STRING} !api, чтобы решить проблему. В результате «api» находится в строке запроса вместо uri запроса.
RewriteCond %{QUERY_STRING} !api