如何将通配符条目放入/ etc / hosts?

时间:2013-12-07 21:32:21

标签: hosts

我最近想要为测试域指出所有子域名,假设example.com到localhost。有没有办法将* .example.com上的所有请求指向解析为127.0.0.1

3 个答案:

答案 0 :(得分:86)

/etc/hosts文件不支持通配符。

您必须使用其他服务,例如dnsmasq。要在dnsmasq中启用它,只需编辑dnsmasq.conf并添加以下行:

address=/example.com/127.0.0.1

答案 1 :(得分:6)

以下是那些试图完成原始目标的配置(通配符都指向相同的代码库 - 没有安装,开发环境即XAMPP)

hosts文件(添加条目)

file:/ etc / hosts(非windows)

127.0.0.1   example.local

httpd.conf配置(启用vhosts)

file:/XAMPP/etc/httpd.conf

# Virtual hosts
Include etc/extra/httpd-vhosts.conf

httpd-vhosts.conf配置

file:XAMPP / etc / extra / httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin admin@example.local
    DocumentRoot "/path_to_XAMPP/htdocs"
    ServerName example.local
    ServerAlias *.example.local
#    SetEnv APP_ENVIRONMENT development
#    ErrorLog "logs/example.local-error_log"
#    CustomLog "logs/example.local-access_log" common
</VirtualHost>

重启apache

创建pac文件:

在任何地方保存为whatever.pac,然后在浏览器的网络中加载文件&gt;代理&gt; auto_configuration设置(如果更改则重新加载)

function FindProxyForURL(url, host) {
  if (shExpMatch(host, "*example.local")) {
    return "PROXY example.local";
  }
  return "DIRECT";
}

答案 2 :(得分:3)

使用dnsmasq

假装你正在使用基于debian的dist(ubuntu,mint ..),检查它是否已安装

(sudo) systemctl status dnsmasq

如果它刚被禁用,请使用

启动它
(sudo) systemctl start dnsmasq

如果您必须安装它,请写

(sudo) apt-get install dnsmasq

定义域以解析编辑/etc/dnsmasq.conf,如此

address=/example.com/127.0.0.1

解析* .example.com

<强>!您需要重新加载dnsmasq才能使更改生效!

systemctl reload dnsmasq