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) 请检查所有 &lt;VirtualHost&gt; 声明 - 您可能有相同的声明ServerName 声明了两次。 @grobolom 也尝试执行这个命令(取决于你有什么发行版)apache2 -Shttpd -S 并检查输出——它可能会给你一个重复的位置&lt;VirtualHost&gt; 如果你的警告信息就是这种情况。 嗯...是的,我知道我有两个相似的部分。出现我的警告消息是因为 apache 不接受 test.mysite.com 和 prod.mysite.com 作为同一 IP 上的虚拟主机。我想知道是否有办法解决这个问题,因为像 [test.mysite.com/prod.mysite. org ] 确实适用于单个盒子。 我的开发盒上有 10 多个以类似方式声明的域。您在问题中的片段是很好。必须是别的东西——你没有展示。 “我有两个相似的部分”是什么意思?

以上是关于Apache - 如何将前缀映射到不同的目录的主要内容,如果未能解决你的问题,请参考以下文章

Apache多站点的配置

如何使用Apache Kafka进行内容过滤?

如何将 graphQL 查询属性映射到不同的响应属性?

JAVA:如何将 JSON 键值对映射到不同的变量 Jackson

如何将一个表中列的每个不同值映射到 Hive 中另一个表中列的每个不同值

JPA:如何将一些实体映射到另一个数据库实例的不同模式?