4

我从http://httpd.apache.org/download.cgi下载了 apache2.2.22 src并进行了安装。安装工作正常。但是当我尝试添加虚拟主机时,问题就出现了。我添加了 2 个虚拟主机 1. localhost 2. someother.localhost 两者都指向不同的文档根目录,但解析到第一个虚拟主机的文档根目录。

这是我的虚拟主机文件,

名称虚拟主机 *:80

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/webserver/htdocs"
    ServerName localhost
    ErrorLog "logs/localhost-error_log"
    CustomLog "logs/localhost-access_log" common
</VirtualHost>
<Directory /home/sourabhn/somepath>
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/home/sourabhn/somepath"
    ServerName someother.localhost
    ErrorLog "logs/someother-localhost-error_log"
    CustomLog "logs/someother-localhost-access_log" common
</VirtualHost>

我在 hosts 文件中做了相应的条目。我正在运行 Ubuntu 11.10 机器。请回复您的宝贵建议

4

2 回答 2

2

我立刻注意到你的文件和我从bobpeers这样的网络教程拼凑而成的文件之间存在差异。我已经在虚拟主机块中添加了<Directory>块。

NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/
ServerName xtiansimonslaptop.local
    <Directory "/var/www/">
        Allow from all
        Options +Includes +Indexes +FollowSymLinks
        AllowOverride all
    </Directory>
</VirtualHost>

我正在研究 Drupal,所以我可以将名称解析到 Drupal 目录,它会处理其余的事情。在 Drupal 安装中,我有几个项目,每个项目都在一个 Drupal 安装中设置了自己的域名。下面是一个名为 hello.local 的 Drupal 站点示例,我的另一个 Drupal 站点可能是 cheese.local。两者都指向同一个目录。

<VirtualHost *:80>
    DocumentRoot /var/www/php/drupal7
    ServerName hello.local
#   ServerAlias *.hello.local
        <Directory "/var/www/php/drupal7">
            Allow from all
            Options +Includes +Indexes +FollowSymLinks
            AllowOverride all
        </Directory>
</VirtualHost>

现在它的工作保存为注释行 ServerAlias。这带来了我学到的关于设置 vHosts 的另一点。/etc/hosts 文件对于正确设置很重要。

在 bobpeers 的示例中,您将看到他们的 hosts 条目示例,

ServerName bobpeers.live
ServerName bobpeers.dev

我希望反向名称live.bobpeers.local是服务器名称的更清晰示例。这就是问题——我发现示例中存在不一致之处。一些示例根本不使用诸如.local或遵循通用签名之类的关键术语sub-domain.domaon.com。复制一个人的非正常示例您可能会认为上面的 ServerName 引用了两个虚拟主机 live.local 和 dev.local。据我所知,也许他们会!

关于虚拟主机的另一件事。手册页显示了这一点,

   127.0.0.1       localhost
   192.168.1.10    foo.mydomain.org       foo
   192.168.1.13    bar.mydomain.org       bar

对我的本地主机沙箱有用的是这个,

   127.0.0.1    localhost
   127.0.0.1    mydomain.local           mydomain
   127.0.0.1    foo.mydomain.local       foo
   127.0.0.1    bar.mydomain.local       bar

这似乎是正确的,因为基于名称应该可以解决所有问题,而不是这个 192.168.1.x IP 掩码废话。(^_^)

于 2012-06-30T15:57:32.173 回答
0

我的建议:声明一个“全局”ServerName 和一个全局 DocumentRoot,然后在您的虚拟主机http://httpd.apache.org/docs/2.0/mod/core.html#serveralias中仅使用核心指令 ServerAlias 。

于 2012-04-22T16:35:57.630 回答