Я обновляю свое приложение до новой версии PHP.
Для этого я создал два виртуальных хоста: одно серверное приложение PHP 5.3, а другое - PHP 5.6.
Мои виртуальные хосты похожи на
<VirtualHost *:80>
ServerName php53app.com
DocumentRoot /var/www/php_53/public
<Directory />
Options FollowSymLinks
AllowOverride All
AddHandler php-cgi .php
Action php-cgi /cgi-bin-php/php-cgi-5.3.0
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
и
<VirtualHost *:80>
ServerName php56app.com
DocumentRoot /var/www/php_56/public
<Directory />
Options FollowSymLinks
AllowOverride All
AddHandler php-cgi .php
Action php-cgi /cgi-bin-php/php-cgi-5.6.0
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
Я планирую перенести каждый URL-адрес по URL-адресу.
Например :
Когда я переезжаю /login
в новое приложение должно отображаться php53app.com/login
вместо того php56app.com/login
.
Поэтому мне нужно обслуживать все URL-адреса в одном доменном имени, независимо от того, новое оно или старое. Есть ли какой-либо способ переписать мод apache или что-то в этом роде?
Переписывание - не лучший вариант. Вам следует использовать проксирование запроса.
Из документации mod_proxy:
Кроме того, обратные прокси-серверы можно использовать просто для объединения нескольких серверов в одно и то же пространство URL.
Ваша установка будет выглядеть так:
<VirtualHost *:80>
ServerName php53app.com
DocumentRoot /var/www/php_53/public
# General proxy config ... do not skip
<Proxy *>
AddDefaultCharset off
Order deny,allow
Allow from all
</Proxy>
# now proxy the migrated part
<Location /login>
ProxyPass http://php56app.com/login
ProxyPassReverse http://php56app.com/login
</Location>
<Directory />
Options FollowSymLinks
AllowOverride All
AddHandler php-cgi .php
Action php-cgi /cgi-bin-php/php-cgi-5.3.0
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
Конечно, проксирование может быть достигнуто с помощью перезаписи, но этот способ немного более явный и позволяет более точно контролировать параметры.