【问题标题】:How to enable multiple domains and or subdomains with apache httpd server如何使用 apache httpd 服务器启用多个域和/或子域
【发布时间】:2013-02-01 14:00:31
【问题描述】:

我正在尝试在我的环境开发中启用多个域,但没有按照我在下面尝试的方式成功,此时我错了吗?


我安装了 httpd 并将 httpd.conf 中的 DocumentRoot 更改为:

C:/Webserver/www


*我将 Windows 主机文件更改为(斜体要访问):
如果我切换到 127.0.0.1 api.rotadorock,地址会解析为 www/,但右边是 www/rotadorock/api。

127.0.0.1                       localhost
127.0.0.1                       webserver
127.0.0.1/rotadorock/ecommerce  rotadorock
127.0.0.1/rotadorock/api        api.rotadorock
127.0.0.1/rotadorock/ecommerce  ecommerce.rotadorock
127.0.0.1/rotadorock/mobile     mobile.rotadorock
127.0.0.1/rotadorock/sistema    sistema.rotadorock
127.0.0.1/rotadorock/social     social.rotadorock

*更新(windows主机文件)

我删除了上面提到的主机文件更改,因为正如@Volker Birk 所说,没有必要。但即便如此,仍然无法随意访问(api.rotadorock/ 或 localhost/api.rotadorock/ 应该指向C:/Webserver/www/rotadorock/api)。有什么问题?


最后将 httpd-vhost.conf 更改为:

NameVirtualHost webserver:80

<Directory "C:/Webserver/www">
    Options All
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "c:/Webserver/www"
    ServerAlias localhost
    ErrorLog "logs/httpd-error.log"
    CustomLog "logs/httpd-access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerName webserver
    DocumentRoot "c:/Webserver/www"
    ServerAlias webserver
    ErrorLog "logs/httpd-error.log"
    CustomLog "logs/httpd-access.log" common
</VirtualHost>

<VirtualHost rotadorock:80>
    ServerName rotadorock
    DocumentRoot "c:/Webserver/www/rotadorock/ecommerce"
    ServerAlias rotadorock
    ErrorLog "logs/httpd-error.log"
    CustomLog "logs/httpd-access.log" common
</VirtualHost>

<VirtualHost api.rotadorock:80>
    ServerName api.rotadorock
    DocumentRoot "c:/Webserver/www/rotadorock/api"
    ServerAlias api.rotadorock
    ErrorLog "logs/httpd-error.log"
    CustomLog "logs/httpd-access.log" common
</VirtualHost>

<VirtualHost ecommerce.rotadorock:80>
    ServerName ecommerce.rotadorock
    DocumentRoot "c:/Webserver/www/rotadorock/ecommerce"
    ServerAlias ecommerce.rotadorock
    ErrorLog "logs/httpd-error.log"
    CustomLog "logs/httpd-access.log" common
</VirtualHost>

<VirtualHost mobile.rotadorock:80>
    ServerName mobile.rotadorock
    DocumentRoot "c:/Webserver/www/rotadorock/mobile"
    ServerAlias mobile.rotadorock
    ErrorLog "logs/httpd-error.log"
    CustomLog "logs/httpd-access.log" common
</VirtualHost>

<VirtualHost sistema.rotadorock:80>
    ServerName sistema.rotadorock
    DocumentRoot "c:/Webserver/www/rotadorock/sistema"
    ServerAlias sistema.rotadorock
    ErrorLog "logs/httpd-error.log"
    CustomLog "logs/httpd-access.log" common
</VirtualHost>

<VirtualHost social.rotadorock:80>
    ServerName social.rotadorock
    DocumentRoot "c:/Webserver/www/rotadorock/social"
    ServerAlias social.rotadorock
    ErrorLog "logs/httpd-error.log"
    CustomLog "logs/httpd-access.log" common
</VirtualHost>

【问题讨论】:

    标签: apache vhosts multiple-domains


    【解决方案1】:

    终于解决了问题。我可以一起使用 Windows 主机文件和 httpd-vhosts.conf httpd。

    让我举一个例子来说明如何使多个子域在本地访问。 在要添加的 Windows 主机文件中,对于每个域和子域,您需要这样的内容:

    127.0.0.1    api.rotadorock #my subdomain
    127.0.0.1    rotadorock #my domain
    

    然后是 httpd-vhosts apache httpd:

    # Accessing the API
    <VirtualHost 127.0.0.1>
        DocumentRoot "C:/Webserver/www/rotadorock/api"
        ServerName api.rotadorock
        ServerAlias ​​api.rotadorock
    
        <Directory "C:/Webserver/www/rotadorock/api">
            All Options Includes Indexes
        </ Directory>
    </VirtualHost>
    
    # Accessing the domain
    <VirtualHost 127.0.0.1>
        DocumentRoot "C:/Webserver/www/rotadorock/"
        ServerName rotadorock
        ServerAlias ​​*.rotadorock
    
        <Directory "C:/Webserver/www/rotadorock/">
            All Options Includes Indexes
        </Directory>
    </VirtualHost>
    

    这样我就可以在本地访问 api.rotadorock/ 和 rotadorock/ 了。我尝试了所有没有主机文件的方法。但必须使用它。如果有人可以向我解释它应该怎么做,那么它就不需要使用主机了,我将不胜感激。

    【讨论】:

      【解决方案2】:

      您不需要 hosts 文件。查看文档:

      http://httpd.apache.org/docs/2.2/en/vhosts/name-based.html

      【讨论】:

      • 好的,澄清一下,你什么时候使用hosts文件?删除了hosts的变化,但还是无法访问api.rotadorocklocalhost/api.rotadorock
      • 我在没有主机文件的情况下尝试了所有方法。但必须使用它。
      • 简而言之:永远不要使用 hosts 文件。更好地使用 DNS。
      猜你喜欢
      • 2018-01-03
      • 1970-01-01
      • 2011-02-15
      • 2023-04-11
      • 1970-01-01
      • 2017-11-02
      • 2015-11-23
      • 2016-07-12
      • 2017-05-19
      相关资源
      最近更新 更多