Я переношу свое приложение с PHP 5.6 на php 8.0, перенаправляя передний контроллер на мое устаревшее приложение или мое новое приложение в зависимости от uri.
Я пробовал с псевдонимом, и это работает, но мне нужно сохранить один и тот же хост для обоих и без псевдонима.
Например:
https://foo.bar.com/my_php80_routes
https://foo.bar.com/my_php56_routes
Вот моя неудовлетворительная попытка с псевдонимом
<VirtualHost *:80>
ServerName foo.bar.com
DocumentRoot /var/www/html/foobar/public
# Unwanted prefix
Alias /legacy /var/www/html/foobar/legacy/web
<Directory /var/www/html/foobar/public>
AllowOverride none
Require all granted
SetEnv APP_ENV "dev"
# Handled by php8.0 : ok
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php/php8.0-fpm.sock|fcgi://localhost/"
</FilesMatch>
FallbackResource /index.php
DirectoryIndex index.php
</Directory>
<Directory /var/www/html/foobar/legacy/web>
AllowOverride none
Require all granted
# Handled by libapache2-mod-php5.6 : ok
FallbackResource /app_dev.php
DirectoryIndex app_dev.php
</Directory>
ErrorLog /var/log/apache2/foobar.log
CustomLog /var/log/apache2/foobar.log combined
</VirtualHost>
Я искал другой метод, возможно, основанный на пользовательском заголовке HTTP, таком как «FOOBARAPP_LEGACY: 1», но я не нашел способа сопоставить HTTP HEADER с местоположением файловой системы с помощью Apache.
Есть ли другое решение?
[редактировать]
Я постараюсь объяснить себя лучше.
Чего я пытаюсь добиться, так это иметь 2 приложения, каждое из которых работает в другой версии PHP, одно из которых является «Основным приложением» (новое приложение на PHP8.0) и перенаправляется на «Второе приложение», если маршрут не найден «Основным Приложение".
Все это совершенно прозрачно для конечного пользователя. (тот же домен, без префикса)
Если https://foo.bar.com/posts еще не перенесено: основное приложение не находит маршрут и перенаправляет на второе приложение, которое будет обслуживать контент.
Когда эта конечная точка переносится в «Основное приложение»: Главное приложение находит маршрут и обслуживает контент.
Поэтому я прошу решение, которое не включает префикс / или новый субдомен.