我想设置我的本地开发机器,以便任何对*的请求。Local被重定向到localhost。这个想法是,当我开发多个站点时,我只需向Apache添加名为site1的vhosts。地方,site2。让它们都解析到localhost,而Apache则相应地服务于不同的站点。

我用的是Windows XP。

我试着加上

127.0.0.1       *.local

到我的c:\windows\system32\drivers\etc\hosts文件,也试过:

127.0.0.1       .local

这两种方法似乎都不管用。

我知道我可以在不同的端口号上设置它们,但这是一种痛苦,因为很难记住哪个端口是哪个端口。

我不想设置本地DNS服务器,有什么建议吗?


当前回答

我制作了这个简单的工具来代替主机。支持正则表达式。 https://github.com/stackia/DNSAgent

配置示例:

[
    {
        "Pattern": "^.*$",
        "NameServer": "8.8.8.8"
    },
    {
        "Pattern": "^(.*\\.googlevideo\\.com)|((.*\\.)?(youtube|ytimg)\\.com)$",
        "Address": "203.66.168.119"
    },
    {
        "Pattern": "^.*\\.cn$",
        "NameServer": "114.114.114.114"
    },
    {
        "Pattern": "baidu.com$",
        "Address": "127.0.0.1"
    }
]

其他回答

您可以使用动态DNS客户端,例如http://www.no-ip.com。然后,用外部DNS服务器CNAME *.mydomain.com改为mydomain.no-ip.com。

丙烯酸DNS代理(免费,开源)的工作。它用自己的hosts文件创建一个代理DNS服务器(在您自己的计算机上)。hosts文件接受通配符。

官方网站下载

http://mayakron.altervista.org/support/browse.php?path=Acrylic&name=Home

配置亚克力DNS代理

要配置丙烯酸DNS代理,从上面的链接安装它,然后转到:

开始 项目 丙烯酸DNS代理 配置 编辑定制主机文件(AcrylicHosts.txt)

在文件末尾添加如下代码:

127.0.0.1   *.localhost
127.0.0.1   *.local
127.0.0.1   *.lc

重新启动丙烯酸DNS代理服务:

开始 项目 Acrilic DNS代理 配置 重启亚克力服务

您还需要在网络接口设置中调整DNS设置:

开始 控制面板 网络与互联网 网络连接 本地连接属性 TCP / IPv4

设置“使用以下DNS服务器地址”:

Preferred DNS Server: 127.0.0.1

如果你把这个答案和jeremyasnyder的答案结合起来(使用VirtualDocumentRoot),你就可以通过简单地创建一个目录来自动设置域/虚拟主机。

虽然你不能添加这样的通配符,但你可以添加你需要的完整网站列表,至少对于测试来说,这对我来说足够好,在你的hosts文件中,你只需要添加:

127.0.0.1 site1.local 127.0.0.1 site2.local 127.0.0.1 site3.local ...

@petah和丙烯酸DNS代理是最好的答案,最后他提到了使用Apache做多站点的能力,@jeremyasnyder在下面描述了一点…

... 然而,在我们的例子中,我们正在测试一个多租户托管系统,因此我们想要测试的大多数域都指向同一个虚拟主机,而其他一些域则指向其他地方。

所以在我们的例子中,你只需在ServerAlias指令中使用正则通配符,就像这样…

ServerAlias *.foo.local

这可以使用Pi-Hole完成,只需编辑“/etc/hosts”并重新启动dns服务。

nano /etc/hosts
pihole restartdns

例子:

127.0.1.1       raspberrypi
192.168.1.1     w1.dev.net
192.168.1.2     w2.dev.net
192.168.1.3     w3.dev.net