ฉันกำลังย้ายแอปจาก 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 Header ที่กำหนดเอง เช่น "FOOBARAPP_LEGACY: 1" แต่ฉันไม่พบวิธีแมป HTTP HEADER กับตำแหน่งระบบไฟล์ด้วย Apache
มีวิธีอื่นอีกไหม ?
[แก้ไข]
ฉันจะพยายามอธิบายตัวเองให้ดีขึ้น
สิ่งที่ฉันพยายามบรรลุคือการมี 2 แอปพลิเคชันที่ทำงานบนเวอร์ชัน PHP ที่แตกต่างกัน แอปหนึ่งคือ "แอปหลัก" (แอปใหม่บน PHP8.0) และเปลี่ยนเส้นทางไปยัง "แอปที่สอง" หากไม่พบเส้นทางโดย "หลัก แอป".
ทั้งหมดนี้โปร่งใสอย่างสมบูรณ์สำหรับผู้ใช้ปลายทาง (โดเมนเดียวกัน ไม่มีคำนำหน้า)
ถ้า https://foo.bar.com/posts ยังไม่ได้ย้าย : แอพหลักไม่พบเส้นทางและเปลี่ยนเส้นทางไปยังแอพที่สองที่จะให้บริการเนื้อหา
เมื่อปลายทางนี้ถูกย้ายไปยัง "แอปหลัก" : แอปหลักจะค้นหาเส้นทางและให้บริการเนื้อหา
ดังนั้นฉันจึงขอวิธีแก้ปัญหาที่ไม่เกี่ยวข้องกับ /prefix หรือโดเมนย่อยใหม่