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”将一个本地站点的请求转发到其他服务器等。