Apache2: 2 версии PHP в одном VHOST

Apache2: 2 версии PHP в одном VHOST

Я переношу свое приложение с 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 с расположением файловой системы с помощью Apache.

Есть ли другое решение?

[редактировать]

Я постараюсь объясниться получше.

Я пытаюсь добиться того, чтобы 2 приложения работали на разных версиях PHP, одно из которых будет «Главным приложением» (новое приложение на PHP8.0) и перенаправлялось на «Второе приложение», если маршрут не найден «Главным приложением». Все это будет полностью прозрачно для конечного пользователя. (тот же домен, без префикса)

Еслиhttps://foo.bar.com/postsеще не перенесено: основное приложение не находит маршрут и перенаправляется во второе приложение, которое будет обслуживать контент.

Когда эта конечная точка переносится в «Главное приложение»: Главное приложение находит маршрут и обслуживает контент.

Поэтому я прошу решения, которое не включает в себя /prefix или новый поддомен.

решение1

Итак, вы пытаетесь направить определенный виртуальный хост через канал, который идет к прокси-модулю для доступа к хосту по петле??? Нотолькодля PHP-файлов? Это звучит неоправданно сложно.

Почему бы не запустить второй виртуальный хост на вторичном порту и не использовать mod_proxy для управления всем виртуальным хостом (т.е., в общем, это «способ» выполнить обновление, сохранив при этом выход в Интернет).

Или, знаете, вы можете буквально сделать виртуальный хост для каждого, когда вы мигрируете. А затем вставить простые перенаправления между виртуальными хостами, когда «альтернативный» URL появляется на «неправильном» хосте.

Когда вы имеете дело с таким типом миграции, выберитепростейшийформа «это против того» и катитесь в этом направлении.

Или, если яполностьюпропустил "спросить" в вашем вопросе... у вас есть успех в запуске нескольких версий PHP в одном экземпляре? Пожалуйста, уточните, поскольку, честно говоря... этонетто, что я когда-либо рекомендовал бы, потому что, знаете ли... PHP. ;-)

Связанный контент