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

hum*_*ngs 2 directory virtualhost apache-2.4

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

  • Ubuntu 服务器 12.04 LTS;
  • 阿帕奇2.4 ;
  • PHP 5.5;

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

  • Drupal: /l/disk0/drupal/public_html ;
  • Wordpress: /l/disk0/wordpress/public_html ;

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

但是,这是一个开发环境,这里没有域。我搜索了很多网站,找到了很多教程,所有教程都解释了如何使用域而不是子目录来执行此操作。

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

 - http://example.com/wordpress;
 - http://example.com/drupal;
Run Code Online (Sandbox Code Playgroud)

我已经尝试过这个 VirtualHost:

<VirtualHost *:80>
        ServerName example.com
        ServerAdmin web@myserver.com
        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>
Run Code Online (Sandbox Code Playgroud)

没用。

Jen*_*y D 7

当您希望为每个站点使用单独的域名时,使用 VirtualHost。当 apache 选择使用哪个虚拟主机时,它会查看 URL 的域名部分。因此,当该部分相同时,这意味着您无法使用 VirtualHosts 将其拆分。

你有两个选择:

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

  • 使用另一种方式将两个站点分开。

在前一种情况下,您会保留您的VirtualHost配置,但您会更改ServerName每个配置。

在后一种情况下,您将删除VirtualHost配置并执行类似的操作

    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>
Run Code Online (Sandbox Code Playgroud)