问题是我只有一个域名需要运行3个不同的产品(其中2个基于PHP,1个python)。所以我需要做的是将url中的路径视为不同的虚拟主机;即:
www.domain.com/first_url/
www.domain.com/second_url/
www.domain.com/third_url/
第一到第三个将作为单独的虚拟主机。
有任何线索如何做到这一点?
答案 0 :(得分:19)
自问这个问题已经有一段时间了,但由于我正在寻找类似问题的解决方案,我将添加解决方案。
这可以通过使用Alias或AliasMatch指令来实现。更多细节可以在这里找到:
http://httpd.apache.org/docs/2.2/mod/mod_alias.html
Alias /first_url/ /var/www/first_url_resources
答案 1 :(得分:5)
apache中的“虚拟主机”仅适用于域名,不适用于路径的某些部分。你无法实现自己想要的目标。
答案 2 :(得分:1)
您可能希望使用apache-config指令执行某些操作,因为您要求使用虚拟主机解决方案。正如@cweiske解释的那样,Apache只能将virtualHosts作为实际域使用。
在这种情况下,解决方案是在您正在使用的子目录中使用.htaccess
文件,或者在当前(虚拟)主机中设置<Directory "/web/root/subdir">..</Directory>
块配置。
如果你想将它们作为VirtualHosts('app1.domain.org')运行,你也可以选择在不同的子域上托管它们
答案 3 :(得分:1)
此示例说明如何为每个目录分配不同的PHP版本,它还可以通过在特定端口上以fast_cgi
运行Python解释器来调整以添加Python支持
出于示例的目的,我假设每个PHP版本都有单独的目录,并且它们是根据运行它们的PHP版本命名的,但是这可以调整
mkdir /home/user/www
mkdir /home/user/www/5.6.5
mkdir /home/user/www/7.0.2
mkdir /home/user/www/7.0.4
mkdir /home/user/www/7.0.6
创建应该由不同PHP版本处理的目录的符号链接
sudo ln -s /home/user/www/7.0.2/ /var/www/html/7.0.2
sudo ln -s /home/user/www/7.0.4/ /var/www/html/7.0.4
sudo ln -s /home/user/www/7.0.6/ /var/www/html/7.0.6
然后将以下行添加到默认虚拟主机*:80
中的/etc/apache2/sites-enabled/000-default.conf
(为了你的需要,你可以在这里为需要Python的网站设置一个更快的cgi处理程序),我假设php 5.6.5
在端口9999
上运行,7.0.2
在端口{上运行{1}}等...
9998
假设您的服务器由DirectoryIndex index.html index.php
ProxyPassMatch ^/5.6.5/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9999/var/www/html/
ProxyPassMatch ^/7.0.2/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9998/var/www/html/
ProxyPassMatch ^/7.0.4/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9997/var/www/html/
ProxyPassMatch ^/7.0.6/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9996/var/www/html/
指向,您可以在
example.com