Apache 通过路径为一个域提供 2 个网站
Posted
技术标签:
【中文标题】Apache 通过路径为一个域提供 2 个网站【英文标题】:Apache serving 2 websites to one domain with path 【发布时间】:2017-02-23 09:23:36 【问题描述】:我是新手,我到处搜索服务器路由方法,以便能够将 2 个站点存储在单个域的不同路径上。我发现的大多数帮助是指将虚拟主机用于多个域、子域、IP 等。到目前为止,它们都不符合我的需要。
所以我在Debian-8
上拥有最新的Apache2
、php
、mysql
堆栈,并在/html
的子文件夹上安装了2 个功能站点(数据库、用户、...一切正常):
/var/www/html/crm下的crm_site(存放一个用于项目跟踪的php脚本)
和
/var/www/html/wordpress 下的 wp_site(存储 wordpress 网站)。
我希望能够使用我拥有的唯一域(例如 www.example.com)访问它们,我已经设置了该域以访问我的服务器。
我希望我只需要添加到我的域的路径(www.example.com/crm/index.php
或 www.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 服务器