Apache - 如何将前缀映射到不同的目录
Posted
技术标签:
【中文标题】Apache - 如何将前缀映射到不同的目录【英文标题】:Apache - how to map prefixes to different directories 【发布时间】:2011-10-20 01:20:06 【问题描述】:是否可以将 Apache 配置为允许不同的前缀(而不是 www)映射到文件系统中的不同目录?比如……
我的网络服务器上有两个不同的环境:
/home/me/test/web : Test Environment
/home/production/web : Production Environment
我希望这些映射到这些网址:
test.mysite.com -> /home/me/test/web
prod.mysite.com -> /home/production/web
但是,我对 VirtualHosts 的尝试都没有奏效:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName test.mysite.com
** Some SetEnvs **
</VirtualHost>
<VirtualHost *:80>
ServerName prod.mysite.com
** Different SetEnvs **
</VirtualHost>
这会引发以下错误:
[warn] _default_ VirtualHost overlap on port 80, the first has precedence
这种配置甚至可以使用 Apache,还是我做错了什么?此外,一些澄清 - 使用 virtualhosts 文件的简单重写可能也不适合。它适用于直接目录的东西,但是我不能像在 VirtualHost 部分中那样使用任何 SetEnv 指令。
【问题讨论】:
【参考方案1】:应该是:
而不是.
:
NameVirtualHost *:80
【讨论】:
谢谢,复制时打错了。但是,在 .conf 文件中是正确的。 @grobolom 在这种情况下,您有一些指令声明了两次:仔细检查您是否有 1)NameVirtualHost *:80
只声明了一次 2) 请检查所有 <VirtualHost>
声明 - 您可能有相同的声明ServerName
声明了两次。
@grobolom 也尝试执行这个命令(取决于你有什么发行版)apache2 -S
或httpd -S
并检查输出——它可能会给你一个重复的位置<VirtualHost>
如果你的警告信息就是这种情况。
嗯...是的,我知道我有两个相似的部分。出现我的警告消息是因为 apache 不接受 test.mysite.com 和 prod.mysite.com 作为同一 IP 上的虚拟主机。我想知道是否有办法解决这个问题,因为像 [test.mysite.com/prod.mysite. org ] 确实适用于单个盒子。
我的开发盒上有 10 多个以类似方式声明的域。您在问题中的片段是很好。必须是别的东西——你没有展示。 “我有两个相似的部分”是什么意思?以上是关于Apache - 如何将前缀映射到不同的目录的主要内容,如果未能解决你的问题,请参考以下文章
JAVA:如何将 JSON 键值对映射到不同的变量 Jackson