在同一子域上托管API和客户端:Apache?

时间:2019-04-25 09:04:03

标签: php apache

我有一个名为foobar的Web应用程序。在此foobar文件夹中,我有两个文件夹:

  1. client
  2. server

服务器包含我的api,并使用Slim(PHP)编写。我在server/public/index.php中有一个文件可以处理。

客户包含我的反应代码。在其中,有一个build文件夹,其中包含react's个构建文件; index.html文件。

此应用程序将托管在一个子域中,即foo.bar.com

在我的服务器上,我正在使用Apache的VirtualHost来配置服务器和客户端。

这就是我想要的:

  1. foo.bar.com/的任何请求都应转到client/build/index.html(客户反应网站)。

  2. foo.bar.com/api/*的任何请求都应转到server/public/index.php

这是到目前为止我得到的:

<VirtualHost *:80>

    ServerName foo.bar.com

    DocumentRoot /var/www/deployment_foobar

    <Directory /var/www/deployment_foobar/server>
        RewriteRule /api/(.*) /public/index.php
    </Directory>

    <Directory /var/www/deployment_foobar/client>
        RewriteRule / /build
    </Directory>
</VirtualHost>

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

尝试:

<VirtualHost *:80>

    ServerName foo.bar.com
    DocumentRoot /var/www/deployment_foobar

    RewriteRule ^/api/ /server/public/index.php [L]

    RewriteCond %{REQUEST_URI} !^/api/
    RewriteCond %{REQUEST_URI} !^/server/public
    RewriteCond %{REQUEST_URI} !^/client/build
    RewriteRule ^ /client/build%{REQUEST_URI} [L]

</VirtualHost>