我有两个 Laravel 站点:一个首页和一个 API 站点。我的客户稍后会将 API 站点分离到子域中,但目前客户希望从登录页面的“子文件夹”内提供 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/
它时,它确实index.php
从 API 站点调用。但如果我调用它,它会从首页站点http://example.com/api/some-resource
调用,并且会失败,出现 404 未找到错误。index.php
我也试过了
AliasMatch "^/api(/|$)(.*)" "/sites/api/public"
但随后,即使http://example.com/api/
root 身份也因 Apache 403 禁止页面而失败(http://example.com
但其路由工作正常)。
我如何告诉Alias
它匹配/api
所有子路由并将(.*)
部分发送到 Laravel 的路由器?
此外,我很可能必须编辑.htaccess
其他站点中的重定向规则以从 URL 中删除该/api
部分,然后再将其传递给 Laravel index.php
,但我不确定如何正确执行此操作。
如果我做错了,并且有另一种方法可以从同一个域名为两个不同的站点提供服务,我愿意接受建议。