【发布时间】:2018-04-08 11:18:46
【问题描述】:
我有四个 Web 开发系统,两个使用 Windows 10,两个使用 Ubuntu Linux,并且在三个上设置 Alias 文件夹没有问题,但目前正在旅行,第四个遇到问题。它使用 Apache2 运行 Ubuntu。下面是其中一个 VirtualHost 条目的示例。
<VirtualHost devsite.dev:80>
DocumentRoot /var/www/html/devsite.dev
ServerName devsite.dev
Alias /common/ /var/www/html/devsite.dev/common/
<Directory "/var/www/html/devsite.dev">
AllowOverride None
Options FollowSymLinks Indexes
Require all granted
</Directory>
Options FollowSymLinks
</VirtualHost>
以上不起作用所以我错过了什么?包括公共文件夹在内的所有站点文件夹都在 /var/www/html/ 中,由于别名不起作用,我一定错过了一些东西。换句话说,每个站点都有自己的 sitename.dev 文件夹,因此 http://devsite.dev/ 会拉起站点,但站点文件夹中没有物理文件夹供 http://devsite.dev/common/ 工作,因此需要别名。不确定是否需要尾部斜杠,并且不记得我的其他系统有什么,但无论哪种方式,这似乎都无关紧要。
当我说它不起作用时,我的意思是别名文件夹不会像在我所有其他系统上那样显示在 PC 的文件管理器中,并且该站点无法使用浏览器找到它以从正如我在上面的示例 URL 中显示的那样。
也许我不太清楚 common 不在 /var/www/html/devsite.dev 中。相反,它位于 /var/www/html/common 并且确实需要别名才能工作。此外,Apache 000-default.conf 文件中已经有一个 DocumentRoot /var/www/html 行。
【问题讨论】:
-
为什么在这种情况下你甚至需要
Alias?该目录已经存在于DocumentRoot下并具有相同的名称,因此已找到/common。如果它不起作用,你确定 Apache 甚至在使用VirtualHost。 -
“common”是一个由多个站点共享的文件夹,位于服务器根目录中,但不在单个网站文件夹中。 VirtualHost 正在运行,因为该站点正常运行。
-
这不是你的配置所说的。你有
DocumentRoot作为/var/www/html/devsite.dev,Alias的最后一个参数是/var/www/html/devsite.dev/common/,它是DocumentRoot的子目录,而不是在服务器根目录中。 -
这就是我发现的每一个参考资料都在我的其他系统上显示和工作。服务器 DocumentRoot 是 /var/www/html/。您是说 VirtualHost 不需要告诉它在哪里可以找到该站点的文件?
-
common实际上是一个符号链接吗?即使它是并且它链接到../common或其他地方,也不需要Alias。不过,需要为实际存在的common目录添加一个Directory指令,授予对它的访问权限。
标签: apache ubuntu apache2 alias virtualhost