Apache vhosts - 如何以一种方式路由多个站点,但以不同的方式路由开发站点?

Apache vhosts - 如何以一种方式路由多个站点,但以不同的方式路由开发站点?
127.0.0.1 developmentsite.com
127.0.0.1 blockeddomain1.com
127.0.0.1 blockeddomain2.com

我想阻止最后 2 个域(以及许多其他域)。为此,我添加了以下 vhost 条目:

<VirtualHost *:80>
    DocumentRoot "/sites/blocked"
    <Directory /sites/blocked>
        Options Indexes FollowSymLinks Multiviews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

效果很好。但现在我想将第一个域名路由到我正在服务的站点(运行 XAMPP)。这适用于将所有域名路由到我的开发站点:

<VirtualHost *:80>
    DocumentRoot "/sites/developmentsite.com"
    ServerName developmentsite.com
    ServerAlias developmentsite.com
    <Directory /sites/developmentsite.com>
        Options Indexes FollowSymLinks Multiviews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
    ErrorLog "/sites/logs/developmentsite.com/error_log"
    CustomLog "/sites/logs/developmentsite.com/access_log" common
</VirtualHost>

但我想发送只是那里有 developmentsite.com。我尝试过不同的端口和 IP,但我想我只是不明白一些基本的东西。

抱歉问了这么基础的问题。谢谢!

答案1

我认为您的“阻止”VirtualHost 仅能按您希望的方式工作,这是由于 Apache 的默认行为所致;如果它找不到与请求匹配的ServerName/ VirtualHost ServerAlias,它将使用默认 VirtualHost(如果没有明确选择,则是它解析的第一个 VirtualHost)。

您应该将您想要明确阻止的网站放入您的“阻止”VirtualHost 中,如下所示:

<VirtualHost *:80>
    # Add these lines so Apache knows explicitly what to route here:
    ServerName blocking.localhost
    ServerAlias blockeddomain1.com *.blockeddomain1.com
    ServerAlias blockeddomain2.com *.blockeddomain2.com

    # Everything else
    DocumentRoot "/sites/blocked"
    <Directory /sites/blocked>
        Options Indexes FollowSymLinks Multiviews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

答案2

我认为您需要再次查看虚拟主机配置。问题毫无意义。如何

<VirtualHost *:80>
    DocumentRoot "/sites/blocked"
    <Directory /sites/blocked>
        Options Indexes FollowSymLinks Multiviews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

允许 developmentsite.com 并阻止其他网站,配置中没有提到允许和阻止的内容,因此不清楚。请查看http://www.sbarjatiya.com/notes_wiki/index.php/Apache_virtualhost_configuration_for_hosting_multiple_domains了解 Apache 虚拟主机的基础知识。然后使用

Order deny,allow
deny from all 

拒绝您不想访问的域。

然后使用“ProxyPass”将一个本地站点的请求转发到其他服务器等。

相关内容