Apache2-需要多个具有相同域的项目在域名后使用不同的路径
Posted
技术标签:
【中文标题】Apache2-需要多个具有相同域的项目在域名后使用不同的路径【英文标题】:Apache2- need multiple projects with same domain that use different path after domain name 【发布时间】:2015-08-29 01:29:24 【问题描述】:我有 2 个完全不同的项目,我想从同一个域名“mysimpledomainname.com”托管,IP 地址为 xx.xx.xxx.xx(非本地)
这两个项目位于 项目 1) /var/www/html/project1 项目 2) /var/www/html/project2
我想让这两个项目像这样解决
项目 1
mysimpledomainname.com
项目 2
mysimpledomainname.com/project2
我不想使用子域名。这是针对我的公共服务器上的一个项目,而不是我的本地计算机,所以我认为更新主机文件对我没有帮助。
我已经从 mysimpledomainname.com 加载了第一个项目(它已经在工作)。
在 sites-available 目录中,我有一个带有值的 conf 文件 mysimpledomainname.com.conf:
<VirtualHost *:80>
ServerAdmin myemail@gmail.com
DocumentRoot /var/www/html/project1
<Directory /var/www/html/project1/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
RewriteEngine On
</Directory>
ErrorLog $APACHE_LOG_DIR/error.log
CustomLog $APACHE_LOG_DIR/access.log combined
</VirtualHost>
我认为我需要设置 2 个不同的 conf 文件才能执行此操作,但在四处搜索后我无法找到解决方案。 谁能帮我这个?您能否准确地发布两个不同的 conf 文件所需的内容,而不是给出一个简短的答案?
谢谢,
大卫
【问题讨论】:
【参考方案1】:您只能有 1 个 VirtualHost
指令,因为这是每个 FQDN 定义的,并且您只想使用 mysimpledomainname.com
。
Project1 的配置正常。您只需要在路径/project2
下提供另一个目录。为此,您需要使用Alias
指令。
所以你的最终配置应该是这样的(当然,如果你愿意,你可以为每个子目录设置单独的 Directory
配置):
<VirtualHost *:80>
ServerAdmin myemail@gmail.com
DocumentRoot /var/www/html/project1
Alias /project2 /var/www/html/project2
<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
RewriteEngine On
</Directory>
ErrorLog $APACHE_LOG_DIR/error.log
CustomLog $APACHE_LOG_DIR/access.log combined
</VirtualHost>
【讨论】:
非常感谢您的回答。我之前尝试过使用 Alias,但我的 Directory 配置指向我的 DocumentRoot。您的配置有效。 谢谢你。从昨天开始,我一直在寻找潜在的解决方案。大多数教程都假设使用子域。以上是关于Apache2-需要多个具有相同域的项目在域名后使用不同的路径的主要内容,如果未能解决你的问题,请参考以下文章
Django VirtualHosting:如何在一个 VPS 上托管具有不同域的多个 django 项目