gpt4 book ai didi

用于本地开发的 Apache 单一动态虚拟主机配置

转载 作者:行者123 更新时间:2023-12-01 12:51:41 26 4
gpt4 key购买 nike

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

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

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

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

要访问项目,我使用以下 url:customer1.project1.dev、customer1.project2.dev、customer2.project1.dev ...我读过一些关于虚拟主机配置的文章,其中讨论了在 rootdirectory 参数中使用部分 url,如下所示:/home/user/mainprojectdirectory/%1/%2/public所以我开始尝试这个基础:

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

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

谢谢。

最佳答案

我做到了!

首先,我们需要启用两个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

希望对您有所帮助。如果有人建议改进此配置,我很开放。谢谢

关于用于本地开发的 Apache 单一动态虚拟主机配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12037498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com