在网站的虚拟主机中映射别名 – urlpath不起作用

我有两个Laravel站点:一个首页和一个API站点。 我的客户稍后会将子站点上的API站点分开,但目前客户希望从login页面的“子文件夹”内部提供API(主要是因为他还没有通配符SSL / TLS证书)。 它应该是这样的:

http://example.com – 可能包含一些子路由的首页,例如http://example.com/contact-us

http://example.com/api/ – API

我不想把两个项目的代码混在一起; 他们正在由不同的开发人员维护,因此将该文件夹映射为Apache VirtualHost似乎是一种方法。

我做了如下:

 <VirtualHost *:80> DocumentRoot "/sites/front-page/public" ServerName somedomain.com ServerAlias www.somedomain.com <Directory "/sites/front-page/public"> AllowOverride All Require all granted </Directory> Alias /api "/sites/api/public" <Directory "/sites/api/public"> AllowOverride All Require all granted </Directory> </VirtualHost> 

现在,当我访问http://example.com/api/ ,确实从API网站调用了index.php 。 但是,如果我打电话http://example.com/api/some-resource它从头版网站调用index.php ,并失败,404找不到。

我也试过了

 AliasMatch "^/api(/|$)(.*)" "/sites/api/public" 

但是即使是http://example.com/api/ 403的禁止页面( http://example.com和它的path工作正常,虽然)失败了。

如何告诉Alias匹配所有子路由/api并将(.*)部分发送到Laravel的路由器?

此外,我很可能将不得不编辑.htaccess其他网站中的redirect规则,以从url去除/api部分之前传递给Laravel的index.php ,但我不知道如何做到这一点。

如果我这样做是错误的,还有另一种方式来服务于同一个域的两个不同的网站,我愿意提供build议。