httpd-虚拟​​主机访问同一个网站

httpd-虚拟​​主机访问同一个网站

这是我的 /etc/httpd/conf.d/test.conf

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName test.dev
    ServerAlias test.dev.*.xip.io
    DocumentRoot /var/www/html/user/test/web
    ErrorLog "/var/www/html/user/test/app/logs/httpd_error.log"
    CustomLog "/var/www/html/user/test/app/logs/httpd_access.log" combined
    <Directory "/var/www/html/user/test/web">
        # AllowOverride All      # Deprecated
        # Order Allow,Deny       # Deprecated
        # Options All
        # Allow from all         # Deprecated
        # Require all granted    # << New way of doing it
        Options +FollowSymlinks +Indexes
        AllowOverride all
    </Directory>
</VirtualHost>

访问http://test.dev.192.168.1.4.xip.io/成功将我重定向到正确的网站。访问http://192.168.1.4/还会将我重定向到同一个网站,而不是我期望看到的索引。此外,访问http://test.dev-some-random-string.192.168.1.4.xip.io/也会将我重定向到同一个网站。

我该如何配置它,以便当我尝试访问测试.dev.192.168.1.4.xip.io,我将在访问时进入我正在编码的页面192.168.1.4.xip.io将显示主页。

我目前正在使用在虚拟机中运行的 centos 6,该虚拟机带有桥接适配器用于网络。这是我的 /etc/httpd/conf/httpd.conf。

http://pastebin.com/iFBin5Lu

答案1

如果您仅定义一个虚拟主机,则所有对 httpd 的请求都将由该虚拟主机处理,无论它们是否与 ServerName 或 ServerAlias 匹配,因为第一个虚拟主机也是默认虚拟主机。在 Apache 中搜索“默认虚拟主机”“基于名称的虚拟主机支持”文档

还请注意,一旦您定义了任何虚拟主机,默认的 ServerName 就会消失,如果您仍想使用它,则必须定义一个新的 vhost 来重新创建它。请参阅上述链接中的插图“主主机消失”。

因此,尝试定义一个默认虚拟主机,它可以简单到

<VirtualHost *:80>
    DocumentRoot /var/www/html
</VirtualHost>

并确保它配置中的所有其他虚拟主机。然后,任何与其他虚拟主机不匹配的请求都将由该虚拟主机处理。

答案2

您需要为每个要显示的网站定义一个 VirtualHost;即使 192.168.1.4 是主网站,您也需要定义一个 VirtualHost,其中定义“ServerAlias 192.168.1.4”。如果只有一个 VirtualHost,您将始终被重定向到 ServerAlias 中定义的网站。

相关内容