Я переношу свое приложение с 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еще не перенесено :Основное приложение не находит маршрут и перенаправляет на второе приложение, которое будет обслуживать контент.
При переносе этой конечной точки в «Основное приложение» :Основное приложение находит маршрут и обслуживает контент.
Поэтому я прошу решение, которое не включает префикс / или новый субдомен.
Итак, вы пытаетесь направить конкретный виртуальный хост через канал, который идет к прокси-модулю для доступа к хосту по петле??? Но только для файлов PHP? Звучит излишне сложно.
Почему бы не запустить второй виртуальный хост на дополнительном порту и использовать mod_proxy для обработки всего виртуального хоста. (т.е. вообще "путь" сделать апгрейд, и по-прежнему иметь выход в интернет-с).
Или, вы знаете, вы можете буквально сделать виртуальный хост для каждого, когда вы мигрируете. А затем добавить-простую переадресацию между виртуальными хостами, когда «альтернативный» URL появляется на «неправильном» хосте.
Когда вы имеете дело с миграцией такого рода, выберите самую простую форму «это против того» и бросьте туда.
Или, если яполностьюпропустил слово "спросить" в вашем вопросе... успешно ли вы запускаете несколько версий PHP в одном и том же экземпляре? Пожалуйста, уточните, если честно... это , а нето, что я когда-либо рекомендовал, потому что, вы знаете... PHP. ;-)