我在一台服务器上有多个虚拟主机,并计划在一个虚拟主机中设置一些别名。
所以我添加了
别名 /foo/ /path/to/foo/
在 virtualhost 指令中,但它没有效果。对 host1/foo/ 的请求将返回 404。但如果我将其添加到 /etc/apache2/mods-available/alias.conf,它就可以工作。但问题是 host2 也会共享此别名。
有没有办法让别名仅对 host1 起作用?
顺便说一句,我使用apache2ctl -l
,没有列出 mod_alias.c,很奇怪。
答案1
这对我有用:
Alias /test /tmp/test
注意路径末尾没有阴影。但我不知道这种效果的原因。
答案2
BTW, I use apache2ctl -l, there's no mod_alias.c listed, weird.
那么这就是你的问题。如果mod_alias
没有安装,你的别名指令将失败。安装并设置后,一切都应该按预期工作。
答案3
文件夹 /etc/apache2/mods-available/ 显示可用模块,而不是已安装/启用的模块。这意味着 mod_alias 未在您的机器上启用。
也许有一个像 mods-enabled 这样的文件夹。使用该文件夹创建到文件 /etc/apache2/mods-available/alias.conf 的链接。然后重新加载/重新启动 Web 服务器。
接下来是错误的(见注释):
apache2ctl -l 应该显示模块。
运行“httpd -M”查看当前加载的模块 ->httpd 命令参考
也许这个命令不适用于你的操作系统。每个发行版都有点不同。在 gentoo 上使用:“apache2ctl modules”