Я хочу перенаправить свои вызовы API из субдомена в основной домен. Мой сервер api находится на example.com. URL запроса http://foo.example.com/api?service=work&action=all_work, но вызовы моей файловой системы должны проходить.
<VirtualHost *:80>
ServerName example.com
ServerAlias foo.example.com
RewriteEngine On
<Proxy *>
Order Allow,Deny
Allow from all
</Proxy>
<Location /api>
ProxyPass http://othersite.com/api retry=0
SetOutputFilter DEFLATE
</Location>
DocumentRoot /var/www/example
RewriteCond %{HTTP_HOST} ^(foo.example.com)$ [NC]
RewriteCond %{REQUEST_URI} =/
RewriteRule (.*) /var/www/example/index.html [L]
RewriteCond %{HTTP_HOST} ^(foo.example.com)$ [NC]
RewriteCond %{REQUEST_URI} !=/
RewriteRule (.*) /var/www/example/$1 [L]
</VirtualHost>
Но я получаю 404 в браузере.
Вместо использования прокси-прохода мы можем иметь точный контроль над ним с помощью RewriteCond и RewriteRule и использовать флаг [P] mod_proxy
RewriteCond %{HTTP_HOST} ^(monitor.whatfix.com)$ [NC]
RewriteCond %{REQUEST_URI} =/api
RewriteRule (.*) http://othersite.com/api [P,L]
Если запрос из поддомена, я переписываю его на другой сайт.