Apache 通过路径为一个域提供 2 个网站

Posted

技术标签:

【中文标题】Apache 通过路径为一个域提供 2 个网站【英文标题】:Apache serving 2 websites to one domain with path 【发布时间】:2017-02-23 09:23:36 【问题描述】:

我是新手,我到处搜索服务器路由方法,以便能够将 2 个站点存储在单个域的不同路径上。我发现的大多数帮助是指将虚拟主机用于多个域、子域、IP 等。到目前为止,它们都不符合我的需要。

所以我在Debian-8 上拥有最新的Apache2phpmysql 堆栈,并在/html 的子文件夹上安装了2 个功能站点(数据库、用户、...一切正常):

/var/www/html/crm下的crm_site(存放一个用于项目跟踪的php脚本)

/var/www/html/wordpress 下的 wp_site(存储 wordpress 网站)。

我希望能够使用我拥有的唯一域(例如 www.example.com)访问它们,我已经设置了该域以访问我的服务器。 我希望我只需要添加到我的域的路径(www.example.com/crm/index.phpwww.example.com/wordpress/index.php)并且它们将被提供,但是无论我在域之后添加什么,浏览器都会指向同一个地方,显示html 中的目录列表(即 crm 和 wordpress)。

谁能告诉我如何做到这一点?谢谢。

【问题讨论】:

有人可以帮忙吗? 【参考方案1】:

听起来您的所有设置都正确,但起始目录除外。

最好改写您的问题。这似乎是你的情况(从你的角度来说):

    有一个网站http://machine.domain.com 我想将/var/www/html 设置为我的默认目录 我想将index.php 设置为我的默认文档

一旦您以这种方式查看您的问题,它就会大大简化。此时,搜索引擎可以为您提供帮助。

为了进一步指导您,例如在 Google 上搜索“apache 设置默认目录”,答案会以粗体显示。 ...更改Apache的根目录或将项目移动到/var/www/html

你已经这样做了,对吧?所以上面的1.和2.完成了。如果没有,请查看以下内容(假设 Ubuntu 最新的 apache2 包。我已经在 docker 容器中对此进行了测试):

文件:/etc/apache2/apache2.conf

内容:

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

把上面的/var/www/改成/var/www/html/

接下来,.php 服务问题。这由引用 here 的 DirectoryIndex 指令控制。查看它的内容表明 index.php 默认是启用的。

示例:

root@b62dsa09327e:/# grep -rnw '/etc/apache2/' -e "DirectoryIndex"
/etc/apache2/mods-available/dir.conf:2: DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm

这可以解决 3 个问题。现在我们已经解决了您最初问题中的问题。

注意:您可能必须将目录更改为 apache2 正在运行的任何内容,因为如果您以 root 身份将文件放入其中。您还必须重新启动 apache 才能使上述更改反映在服务中。

【讨论】:

谢谢。为了允许 php,您可能对某些未正确配置(或根本没有)的东西是正确的;服务器不断返回到 document_root。不确定w 不知道到底是什么,我希望有更直接的线索(这里是主要新手),但我会继续挖掘您评论中的链接。 我认为如果你简化你的问题,你可能会得到更多的关注,这最终会让你的问题看起来就像你的配置文件一样。我会更新我的答案以向您展示...

以上是关于Apache 通过路径为一个域提供 2 个网站的主要内容,如果未能解决你的问题,请参考以下文章

Apache2-需要多个具有相同域的项目在域名后使用不同的路径

将域指向没有虚拟主机或自定义 conf 文件的 apache 服务器

在 Rails/Apache 中自动托管用户域

无法通过虚拟主机 + centos + apache 将网站域指向 Rails 应用程序

为多个域部署Apache Tomcat的WAR文件

Nginx 从特定路径为另一个域的 Django(uWSGI 套接字)提供服务