У меня есть два сайта 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
он называет index.php
с главной страницы сайта, и это не удается с ошибкой 404.
Я тоже пробовал
AliasMatch "^/api(/|$)(.*)" "/sites/api/public"
но тогда даже http://example.com/api/
root не работает с запрещенной страницей Apache 403 (http://example.com
и его маршруты работают нормально).
Как мне сказать Alias
соответствовать /api
со всеми его подмаршрутами и отправьте (.*)
часть к роутеру Laravel?
Кроме того, мне, скорее всего, придется отредактировать .htaccess
Правила перенаправления на другом сайте, чтобы исключить /api
часть URL-адреса перед передачей в Laravel index.php
, но я не знаю, как это сделать правильно.
В случае, если я все делаю неправильно и есть другой способ обслуживать два разных сайта из одного домена, я открыт для предложений.