Estou migrando meu aplicativo do PHP 5.6 para o php 8.0, tendo um front controller redirecionando para meu aplicativo legado ou meu novo aplicativo, dependendo do uri.
Tentei com alias e funciona, mas preciso manter exatamente o mesmo host para ambos e sem alias.
Por exemplo: https://foo.bar.com/my_php80_routes https://foo.bar.com/my_php56_routes
Aqui está minha tentativa insatisfatória com alias
<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>
Procurei outro método, talvez baseado em um cabeçalho HTTP personalizado como "FOOBARAPP_LEGACY: 1", mas não encontrei uma maneira de mapear o HTTP HEADER para um local do sistema de arquivos com o Apache.
Existe alguma outra solução ?
[editar]
Vou tentar me explicar melhor.
O que estou tentando alcançar é ter 2 aplicativos rodando cada um em uma versão PHP diferente, sendo um deles o "Aplicativo Principal" (o novo aplicativo no PHP8.0) e redirecionando para o "Segundo Aplicativo" se a rota não for encontrada por "Principal Aplicativo". Tudo isso totalmente transparente para o usuário final. (mesmo domínio, sem prefixo)
Sehttps://foo.bar.com/postsainda não foi migrado: o aplicativo principal não encontra a rota e redireciona para o segundo aplicativo que servirá o conteúdo.
Quando este ponto final é migrado para "Aplicativo Principal": o Aplicativo Principal encontra a rota e veicula o conteúdo.
Então estou pedindo uma solução que não envolva um/prefixo ou um novo subdomínio.
Responder1
Então, você está tentando canalizar um host virtual específico, através de um pipe, que vai para um módulo proxy para acessar o host em loopback??? Masapenaspara arquivos PHP? Isso parece desnecessariamente complicado.
Por que não executar um segundo host virtual, em uma porta secundária, e usar mod_proxy para lidar com todo o host virtual. (ou seja, geralmente "a maneira" de fazer uma atualização e ainda tê-la voltada para a Internet).
Ou, você sabe, você pode literalmente fazer um host virtual para cada um, conforme você migra. E, em seguida, insira redirecionamentos simples entre hosts virtuais, quando o URL "alternativo" aparecer no host "errado".
Ao lidar com esse tipo de migração, escolhao mais simplesforma de "isto versus aquilo" e rolar dessa forma.
Ou, se eucompletamenteperdi a "pergunta" na sua pergunta... você está tendo sucesso ao executar várias versões do PHP na mesma instância? Por favor, esclareça, tão francamente... énãoalgo que eu recomendaria porque, você sabe... PHP. ;-)