我想将我的 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 错误。
答案1
我们可以使用 RewriteCond 和 RewriteRule 对其进行细粒度控制,而不是使用代理传递,并使用 [P] mod_proxy 标志
RewriteCond %{HTTP_HOST} ^(monitor.whatfix.com)$ [NC]
RewriteCond %{REQUEST_URI} =/api
RewriteRule (.*) http://othersite.com/api [P,L]
如果请求来自子域,那么我会将其重写到另一个站点。