我想设置我的本地开发机器,以便任何对*的请求。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服务器,有什么建议吗?


当前回答

我认为这是不可能的。

无论如何,每次添加新的站点和位置时,您都必须修改apache virtualroot条目,因此将新名称同步到Windows vhost文件并不是一项大工作。

更新:请查看下一个答案和对这个答案的评论。这个答案是6年前的了,不再正确了。

其他回答

要回答您的问题,您不能在Windows下的hosts文件中使用通配符。

但是,如果您只想更改hosts文件以使新站点工作....你可以这样配置你的Apache,你不需要一直编辑它的配置:

http://postpostmodern.com/instructional/a-smarter-mamp/

基本上是基于我的设置的一个快速总结,在apache.conf文件中添加以下内容:

 LoadModule vhost_alias_module modules/mod_vhost_alias.so

 NameVirtualHost *:80

  <Directory "/xampp/sites">
      Options Indexes FollowSymLinks Includes ExecCGI
      AllowOverride All
      Order allow,deny
      Allow from all 
  </Directory>

  <VirtualHost *:80>
      VirtualDocumentRoot c:/xampp/sites/%-1/%-2+/
  </VirtualHost>

这允许我添加这样的条目:

127.0.0.1       test.dev

然后创建目录c:\xampp\sites\dev\test,并将必要的文件放在那里,它就可以工作了。

另一种选择是在apache.conf中使用<Directory>标记,并引用http://localhost/project/中的页面。

配置nginx配置自动子域与丙烯酸DNS代理

你的nginx sites文件夹的Auto.conf文件

server {
    listen 80;
    server_name ~^(?<branch>.*)\.example\.com;
    root /var/www/html/$branch/public;  

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_log  /var/log/nginx/$branch.error.log error;

    sendfile off;

    client_max_body_size 100m;

    location ~ \.php$ {
       try_files $uri /index.php =404;
       fastcgi_pass php-fpm:9000;
       fastcgi_index index.php;
       fastcgi_buffers 16 16k;
       fastcgi_buffer_size 32k;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

添加到Acrylic hosts文件127.0.0.1 example.com *.example.com并重新启动Acrylic服务。 $branch -你的子域名。

设置代替根/var/www/html/$branch/public;您的项目路径

这可以使用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

我制作了这个简单的工具来代替主机。支持正则表达式。 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"
    }
]

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

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

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

ServerAlias *.foo.local