您有 2 个解决方案

您有 2 个解决方案

我有一个外部 IP - 比如说xx.xx.xx.xx。目前,我有 2 个解析到该 IP 地址的 URL。我在 Apache 中使用虚拟主机来确保正确的请求到达网站:

www.mysite1.com --> /home/mysite1
www.mysite2.com --> /home/mysite2

效果很好。但是……

我想向此 IP 添加第三个(然后是第四个和第五个等)网站。这些网站是临时的,因此不会获得域名。我希望使用以下方式访问它们:

http://xx.xx.xx.xx/mysite3 where mysite3 --> /home/mysite3

但似乎来自 site1 的虚拟主机捕获了这些请求并将请求路由到www.mysite1.com难以找到文件 (mysite3),所以我得到了www.mysite1.com404 页面(它们都是 Wordpress 网站)。

我确信这可以做到,但我同样确信我无法弄清楚。

有人知道我需要如何配置“事物”吗?

答案1

您有 2 个解决方案

1.为每个站点创建虚拟主机

在我看来,如果可能的话,我会推荐这个解决方案。

在此步骤中,您需要创建一个网站,就像您之前创建网站一样。但您需要为他们提供一个域名,www.site3.temp即使它没有 DNS 记录。(注意.tmpTLD)

接下来,对于每个打开该网站的用户,他们都需要编辑其主机文件并添加一行,将该临时 URL 指向您的 IP。如下所示:

xx.xx.xx.xx      www.site3.tmp
  1. 在 Linux 和 Mac OS 中,hosts 文件位于/etc/hosts
  2. 在 Windows 中,它<Windows Installation>/system32/drivers/etc/hosts
    默认<Windows Installation>位于C:/Windows

2. 创建别名

如果编辑文件hosts不是解决方案,那么这是你唯一的选择

这需要您编辑默认虚拟主机文件。它是 的虚拟主机www.mysite1.com,因为它是您访问 时打开的虚拟主机http://xx.xx.xx.xx/mysite3
这就是我不喜欢此解决方案的原因,因为它使内容变得丑陋和混乱。而且我只在万不得已的情况下才使用它。

在虚拟主机配置中,添加以下行(当然根据需要更改路径):

Alias /mysite3 /home/mysite3/
# Notice that there isn't a trailing slash
# So this won't work: Alias /mysite3/ /home/mysite3/

当然,如果需要向目录中添加一些 apache 配置,则也需要在同一个主机文件中完成。

<Directory /home/site3/>
    AllowOverride All # Just an example
</Directory>

3. (奖励)结合两种解决方案

这比第二个解决方案更好,但不如第一个解决方案

默认虚拟主机文件是 apache 加载的第一个文件。默认情况下,apache 按字母顺序加载它们。因此,您可以创建一个新的虚拟主机文件,该文件将位于所有其他虚拟主机文件之前。
例如,000-default(现在在 apache2.4 的默认配置中已完成此操作)。

然后在该 Host 文件中创建所有别名,此虚拟主机的默认 URL 将转到 403 页面。因此,最后您将获得以下内容:

www.mysite1.com   --> /home/mysite1
www.mysite2.com   --> /home/mysite2
xx.xx.xx.xx       --> 403 Error
xx.xx.xx.xx/site3 --> /home/site3
xx.xx.xx.xx/site4 --> /home/site4

第二种解决方案比第二种解决方案更受欢迎,因为第二种解决方案可能会与您的其他网站发生冲突。例如,它可能会与您的 URL 重写混淆。

相关内容