Назад | Перейти на главную страницу

Сопоставление псевдонима в виртуальном хосте для веб-сайта - маршруты URL не работают

У меня есть два сайта 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, но я не знаю, как это сделать правильно.

В случае, если я все делаю неправильно и есть другой способ обслуживать два разных сайта из одного домена, я открыт для предложений.