Wildcard domains with virtualhost with Apache on Mac

后端 未结 2 1317
醉话见心
醉话见心 2021-01-22 12:33

I\'m currently running several domains for local development

http://wordpress.dev
http://phpmyadmin.dev
http://projectx.dev
http://projecty.dev
...
相关标签:
2条回答
  • 2021-01-22 13:21

    Use mod_vhost_alias and a VirtualDocumentRoot

    As long as you have no VirtualHost catching foo.dev as a ServerName or ServerAlias you should be able to do the following:

    <VirtualHost *:80>
      ServerName default.dev
    
      VirtualDocumentRoot /Users/youruser/%-2
      ...
      ...
    </VirtualHost>
    

    You'll need the username to be hardcoded, though you say that's not a problem.

    %-2 in the VirtualDocumentRoot represents the penultimate dot-separated part of foo.com, i.e. foo. You could then have directories as you wish that map to the sites:

    http://foo.dev =>  /Users/youruser/Sites/foo
    http://bar.dev =>  /Users/youruser/Sites/bar
    http://subdom.baz.dev =>  /Users/youruser/Sites/baz
    

    You'll need to make sure that any additional domains you want to map in this fashion have an appropriate entry in your hosts file, or DNS if you're using that.

    0 讨论(0)
  • 2021-01-22 13:27

    In order to accomplish what you need, you can configure a dynamically configured mass virtual host.

    To have it you should add something like the following to your httpd.conf file:

    # get the server name from the Host: header
    UseCanonicalName Off
    
    # this log format can be split per-virtual-host based on the first field
    LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
    CustomLog logs/access_log vcommon
    
    # include the server name in the filenames used to satisfy requests
    VirtualDocumentRoot /www/hosts/%0/docs
    VirtualScriptAlias /www/hosts/%0/cgi-bin 
    

    That would do the same as the following:

    NameVirtualHost 111.22.33.44
    <VirtualHost 111.22.33.44>
        ServerName www.customer-1.com
        DocumentRoot /www/hosts/www.customer-1.com/docs
        ScriptAlias /cgi-bin/ /www/hosts/www.customer-1.com/cgi-bin
    </VirtualHost>
    <VirtualHost 111.22.33.44>
        ServerName www.customer-2.com
        DocumentRoot /www/hosts/www.customer-2.com/docs
        ScriptAlias /cgi-bin/ /www/hosts/www.customer-2.com/cgi-bin
    </VirtualHost>
    # blah blah blah
    <VirtualHost 111.22.33.44>
        ServerName www.customer-N.com
        DocumentRoot /www/hosts/www.customer-N.com/docs
        ScriptAlias /cgi-bin/ /www/hosts/www.customer-N.com/cgi-bin
    </VirtualHost> 
    

    For more details on this, check here

    0 讨论(0)
提交回复
热议问题