我有一个外部 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.com
404 页面(它们都是 Wordpress 网站)。
我确信这可以做到,但我同样确信我无法弄清楚。
有人知道我需要如何配置“事物”吗?
答案1
您有 2 个解决方案
1.为每个站点创建虚拟主机
在我看来,如果可能的话,我会推荐这个解决方案。
在此步骤中,您需要创建一个网站,就像您之前创建网站一样。但您需要为他们提供一个域名,www.site3.temp
即使它没有 DNS 记录。(注意.tmp
TLD)
接下来,对于每个打开该网站的用户,他们都需要编辑其主机文件并添加一行,将该临时 URL 指向您的 IP。如下所示:
xx.xx.xx.xx www.site3.tmp
- 在 Linux 和 Mac OS 中,hosts 文件位于
/etc/hosts
- 在 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 重写混淆。