我正在将我的应用程序升级到新的PHP版本。
为此,我创建了两个虚拟主机,一个是服务器PHP5.3应用程序,另一个是PHP5.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重写之类的方法?
发布于 2015-10-21 10:44:53
重写并不是真正的出路。您应该使用代理请求。
来自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>当然,可以通过重写来实现代理,但是这种方式更加明确,允许对选项进行更精细的控制。
https://serverfault.com/questions/730503
复制相似问题