3

我正在本地笔记本电脑(ubuntu 12.04)上配置我的开发环境,并且遇到了一些问题来实现我想要的,我是 apache 配置的初学者。

我创建了一个主项目目录,并且我想根据我的文件夹层次结构为我的所有项目设置一个动态虚拟主机。

这是我使用的文件夹层次结构:

  • 主项目目录(包含所有项目):
    • 客户1
      • 项目1
        • 公共(项目根目录)
      • 项目2
        • 上市
      • 更多项目...
    • 客户2
      • 项目1
        • 上市
    • 更多客户...

要访问一个项目,我使用以下网址:customer1.project1.dev、customer1.project2.dev、customer2.project1.dev ...这个:/home/user/mainprojectdirectory/%1/%2/public 所以我开始尝试这个基础:

<VirtualHost *.dev>
DocumentRoot    /home/user/mainprojectdirectory/%1/%2/public
ServerName  %1.%2.dev
</VirtualHost>

但我不能让它工作。我走对了吗?我应该遵循哪些步骤来实现我想要的?我应该编辑哪个文件?欢迎所有建议!(记住我是 apache 配置的初学者)

谢谢你。

4

1 回答 1

5

我做的!

首先,我们需要启用两个 mod:mod_vhost_alias 和 mod_rewrite

sudo a2enmod vhost_alias
sudo a2enmod rewrite

1] 在 /etc/apache2/sites-available 中创建一个新的虚拟主机,我将它命名为 zzz-dev

<VirtualHost *:80>

#All requests ending with .dev will use this virtualhost
ServerName dev
ServerAlias *.dev

# Get server name of header Host:
UseCanonicalName Off

# Interpret the request url to find the right project folder. Ex: For customer1.project1.dev, %1 is the first part (here: customer1), %2 the second part (here: project1), so the folder for this url is /home/victor/takative/projets/customer1/project1/public
VirtualDocumentRoot /home/user/mainprojectdirectory/%1/%2/public

# Fix for missing $SERVER['DOCUMENT_ROOT'] while using VirtualDocumentRoot, the setDocumentRoot.php file will be added autmatically to set the variable
php_admin_value auto_prepend_file /home/lib/utils/setDocumentRoot.php

RewriteEngine On
RewriteOptions Inherit 

<DirectoryMatch "/home/user/mainprojectdirectory/.*">
    IndexOptions +FancyIndexing NameWidth=*
    Options Includes FollowSymLinks Indexes
    AllowOverride All
    Order allow,deny
    Allow from all
</DirectoryMatch>

</VirtualHost>

以下是 setDocumentroot.php 的内容:

<?php
$_SERVER['DOCUMENT_ROOT'] = str_replace($_SERVER['SCRIPT_NAME'], '',$_SERVER['SCRIPT_FILENAME']);
?>

2]启用新的虚拟主机:

sudo a2ensite zzz-dev

3]重新加载apache:

sudo service apache2 reload

4]现在,要创建一个项目,您只需按照上面的文件夹层次结构并使用以下行编辑 /etc/hosts 文件:

127.0.0.1 customer1.project1.dev

希望能帮助到你。如果有人有改进此配置的建议,我很乐意。谢谢

于 2012-08-20T15:24:36.433 回答