Joe*_*joe 3 apache generics configuration virtualhost dynamic
我正在我的本地笔记本电脑(ubuntu 12.04)上配置我的开发环境,并且在实现我想要的目标时遇到了一些问题,我是 apache 配置的初学者。
我创建了一个主项目目录,我想根据我的文件夹层次结构为我的所有项目设置一个动态虚拟主机。
这是我使用的文件夹层次结构:
要访问一个项目,我使用以下网址: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>
Run Code Online (Sandbox Code Playgroud)
但我不能让它工作。我在正确的路上吗?我应该遵循哪些步骤来实现我想要的?我应该编辑哪个文件?欢迎所有建议!(记住我是 apache 配置的初学者)
谢谢你。
我做到了!
首先,我们需要启用两个 mod:mod_vhost_alias 和 mod_rewrite
sudo a2enmod vhost_alias
sudo a2enmod rewrite
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
下面是 setDocumentroot.php 的内容:
<?php
$_SERVER['DOCUMENT_ROOT'] = str_replace($_SERVER['SCRIPT_NAME'], '',$_SERVER['SCRIPT_FILENAME']);
?>
Run Code Online (Sandbox Code Playgroud)
2]启用新的虚拟主机:
sudo a2ensite zzz-dev
Run Code Online (Sandbox Code Playgroud)
3]重新加载apache:
sudo service apache2 reload
Run Code Online (Sandbox Code Playgroud)
4] 现在,要创建一个项目,您只需按照上面的文件夹层次结构并使用以下行编辑 /etc/hosts 文件:
127.0.0.1 customer1.project1.dev
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你。如果有人有改进此配置的建议,我很乐意。谢谢
| 归档时间: |
|
| 查看次数: |
1483 次 |
| 最近记录: |