我可以有两个(或更多)由子目录分开的Apache VirtualHosts吗?

我认为这是一个简单的问题,但让我更好地解释。 我有以下开发环境:

  • Ubuntu服务器12.04 LTS;
  • Apache 2.4 ;
  • PHP 5.5;

一切工作正常, 除了VirtualHostconfiguration 。 我想部署两个应用程序:Drupal和Wordpress。 每个应用程序都有自己的目录,例如:

  • Drupal: / l / disk0 / drupal / public_html ;
  • WordPress的: / l / disk0 / wordpress / public_html ;

在默认站点中,VirtualHostconfiguration指向/ var / www作为文档根目录。 我想禁用这个默认站点configuration ,我想创build两个VirtualHosts,一个用于Drupal,另一个用于Wordpress。

但是,这是一个开发环境,这里没有域名。 我search了很多网站,我发现了很多教程,他们都解释了如何在域中执行此操作,而不是在子目录中执行此操作。

完成configuration后,访问我的应用程序的URL将是:

- http://example.com/wordpress; - http://example.com/drupal; 

我已经尝试使用这个VirtualHost:

 <VirtualHost *:80> ServerName example.com ServerAdmin [email protected] DocumentRoot /l/disk0/site/public_html <Directory /> AllowOverride None </Directory> Alias /site /l/disk0/site/public_html <Directory /l/disk0/site/public_html> Options MultiViews Indexes Includes FollowSymLinks ExecCGI AllowOverride All Require all granted allow from all </Directory> RewriteEngine On LogLevel warn ErrorLog "/l/disk0/site/logs/apache/site/error.log" CustomLog "/l/disk0/site/logs/apache/site/access.log" combined SSLProxyEngine on </VirtualHost> 

没有工作。

当您想为每个站点分别设置一个域名时使用VirtualHost。 当apacheselect使用哪个虚拟主机时,它会查看URL的域名部分。 所以当这部分是相同的,这意味着你不能使用VirtualHosts分裂它。

你有两个select:

  • 使用单独的主机名,例如drupal.example.comwordpress.example.com而不是example.com/drupalexample.com/wordpress

  • 使用另一种方式分隔这两个网站。

在前一种情况下,您将保留您的VirtualHostconfiguration,但是您将更改每个中的ServerName

在后一种情况下,您将删除VirtualHostconfiguration,而是执行类似的操作

  Alias /drupal /l/disk0/drupal/public_html <Directory /l/disk0/drupal/public_html> Options MultiViews Indexes Includes FollowSymLinks ExecCGI AllowOverride All Require all granted allow from all </Directory> Alias /wordpress /l/disk0/wordpress/public_html <Directory /l/disk0/wordpress/public_html> Options MultiViews Indexes Includes FollowSymLinks ExecCGI AllowOverride All Require all granted allow from all </Directory>