多个主机的 wamp vhosts 问题

Posted

技术标签:

【中文标题】多个主机的 wamp vhosts 问题【英文标题】:wamp vhosts issue with multiple hosts 【发布时间】:2019-03-02 17:24:27 【问题描述】:

我的 wamp localhost 中有 2 个 codeigniter 项目,我正在尝试设置多个虚拟主机。

我的目录结构是这样的:

- www
    - project
    - projectold

我设置了 2 个虚拟主机:project.lhprojectold.lh

这是我的 httpd-vhosts.conf 条目:

<VirtualHost *:80>
  ServerName localhost
  ServerAlias localhost
  DocumentRoot "$INSTALL_DIR/www"
  <Directory "$INSTALL_DIR/www/">
    Options +Indexes +Includes +FollowSymLinks +MultiViews
    AllowOverride All
    Require local
  </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName project.lh
    DocumentRoot "c:/wamp64/www/project"
    SetEnv CI_ENV development
    <Directory  "c:/wamp64/www/project/">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName projectold.lh
    DocumentRoot "c:/wamp64/www/projectold"
    SetEnv CI_ENV development
    <Directory  "c:/wamp64/www/projectold/">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

我还在我的 httpd.conf 文件中取消了对这一行的注释:

LoadModule vhost_alias_module modules/mod_vhost_alias.so

编辑:

这是我的主机文件中当前的内容:

127.0.0.1 localhost
::1 localhost

127.0.0.1   project.lh
::1 project.lh

127.0.0.1   project.lh
::1 project.lh

127.0.0.1   projectold.lh
::1 projectold.lh

(不知道为什么 project.lh 有 2 个条目)

编辑 2: 这是 project.lh 目录中的 .htaccess 文件。 projectold.lh 没有 .htaccess 文件。

RewriteEngine on
RewriteBase /
## Hide the application and system directories by redirecting the request to index.php
RewriteRule ^(application|system|\.svn) index.php?/$1 [L]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
##RewriteRule ^.*$ https://%HTTP_HOST%REQUEST_URI [L,R=301]

我遇到的问题是,当我导航到 projectold.lh 时,它以某种方式拉入了 project.lh 的标记。我不明白为什么或如何会发生这种情况。我在想我一定错过了什么。

我尝试在我的 vhosts 文件中注释掉 project.lh 条目,但这并没有解决问题。希望有人以前见过。

我正在使用 Wamp3.1.3。

【问题讨论】:

你没有提到你在 HOSTS 文件中做了什么。您是否在 HOSTS 文件中注册了域? 我添加了我的主机文件条目。 我不认为我输入了两次。当我使用 UI 添加虚拟主机时,我假设 wamp 正在进行该编辑。我只是复制了目前那里的内容。我将删除多余的条目。 你在这些实例中是否也有一个.htaccess 文件 我添加了 .htaccess 文件。 【参考方案1】:

在 Wampserver 中创建多个虚拟主机/网站 维伦德拉·钱达克(Virendra Chandak)

要创建多个网站,最好在本地计算机上设置每个网站。使用 Wampserver(或只是 Apache),我们可以轻松配置多个网站。以下是使用 Apache 的配置创建多个网站的步骤。这使用 Apache 的“命名虚拟主机”配置。我已经在 Windows XP 和 Windows 7 上运行的 Wampserver 2.1 上测试了这些步骤。

第 1 步:设置您的主机名或设置 Windows 以识别您的本地网站

安装 WAMP 服务器后,您可以转到浏览器并输入 http://localhost 并打开一个页面。默认情况下,Windows 将站点 localhost 识别为引用自身。我们需要设置窗口来识别我们的其他本地网站。为此,我们需要编辑主机文件。该文件位于以下目录下。 (到达此目录的另一种方法是,打开运行命令或按 Windows 键 + R,然后键入“drivers”并按“OK”,然后转到“etc”。) C:/Windows/System32/drivers/etc

进入该目录后,使用您喜欢的文本编辑器(如 Notepad、Editplus、Notepad++)打开该目录中名为 hosts 的文件。

注意:您可能无法在 Windows Vista 或 Windows 7 中编辑或保存此文件。您需要管理员权限才能编辑此文件。

现在,您会在文件末尾看到一行:

127.0.0.1   localhost

此代码告诉您的计算机在我们尝试访问时连接到您自己的计算机

`http://localhost`

现在我们应该将我们的网站添加到这个文件中。假设我们的站点名称是 site1。因此,我们将在 hosts 文件中为其添加一个条目。更新后的文件类似于以下内容:

127.0.0.1   localhost
127.0.0.1   site1

保存此文件并尝试转到http://site1 这会将您带到与http://localhost 相同的页面 现在我们的计算机知道http://site1 是什么了。

注意:确保您没有为 google.com 或 bing.com 等外部网站添加主机条目。如果添加这些条目,则计算机将无法再访问实际网站。 第 2 步:为网站创建一个文件夹

Wampserver 只有一个文件夹或站点根目录来托管网站。此文件夹通常为 C:/wamp/www。我们应该为每个网站创建一个不同的文件夹。我们可以在任何目录或驱动器中创建文件夹。 (如果我们在 C:/wamp/www 之外创建文件夹,我们将需要稍后在 Apache 中进行一些额外的设置。

在这个文件夹中添加一些测试文件,例如 C:/wamp/www/site1 目录中的“index.html”。 第 3 步:设置 Apache 以服务多个站点

我们将为 Apache 设置更改文件 httpd.conf 和 httpd-vhosts.conf。 通过单击 WAMP 服务器图标并选择“Apache -> httpd.conf”打开文件 httpd.conf。该文件通常位于 C:/wamp/bin/apache/Apache2.2.17/conf。

不要在这个文件中添加代码,这不是一个干净和简单的方法。我们只想取消注释此文件中包含 vhosts 文件的一行。

包括 conf/extra/httpd-vhosts.conf

去掉行首的#号,修改后的行应如下所示: 包括 conf/extra/httpd-vhosts.conf

现在,我们将打开文件“httpd-vhosts.conf”,该文件通常位于额外目录(C:/wamp/bin/apache/Apache2.2.17/conf/extra)中

在此文件中,我们将使用以下代码添加虚拟主机:

<VirtualHost *:80>
    ServerAdmin admin@localhost
    DocumentRoot "C:/wamp/www"
    ServerName localhost
    ServerAlias www.localhost.com
    ErrorLog "logs/localhost-error.log"
    CustomLog "logs/localhost-access.log" common
</VirtualHost>

在上面的代码中,ServerName 和 DocumentRoot 是必需的,其他选项是可选的。

所以如果我们想在我们的本地机器上有 3 个站点,如下所示

localhost -> C:/wamp/www
site1 -> C:/wamp/www/site1
site2 -> C:/site2

<VirtualHost *:80>
    ServerAdmin admin@localhost
    DocumentRoot "C:/wamp/www"
    ServerName localhost
    ServerAlias www.localhost.com
    ErrorLog "logs/localhost-error.log"
    CustomLog "logs/localhost-access.log" common
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/wamp/www/site1"
    ServerName site1
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/site2"
    ServerName site2
    <Directory "C:/site2">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

我还没有使用 site1 和 site2 的所有选项,但拥有它们是一个好习惯。另请注意,site2 的代码有一些额外的 Directory 代码。这对于授予服务器对该目录的访问权限是必要的。如果我们不添加它,服务器将无法访问此目录中的文件,因此该站点将无法运行。对于 site1,我们不需要它,因为它在 C:\wamp\www 目录中,其目录设置由 wampserver 中的 defult 设置。

现在重新启动 Apache,您的所有网站都应该可以正常工作了。确保将 site2 添加到主机文件并在 C:/site2 中为其创建目录。

注意:我不对上述步骤在任何情况下的正常运行负责。如果您从我的博客下载任何文件、程序,请确保保护自己。我不对您的计算机、网站、博客、应用程序或其他任何东西造成的任何损害负责。我不隶属于或不认可上述任何网站。

原文:https://www.virendrachandak.com/techtalk/creating-multiple-virtual-websites-in-wampserver/

过去帮助过我。

【讨论】:

抄袭别人的作品被称为剽窃。带有指向这些稍微可疑/简单说明的链接的简单评论会做得很好 我已经引用了它 - 我过去曾被告知,简单地包含链接是不好的做法,因为内容可能会被删除/更改。我从来没有提到这是我的作品——如果有的话,我已经包括了原作者的名字!在击落想要帮助的人之前阅读回复(和参考)! 在评论中很好 另外,您复制的本教程有点过时,因为它使用的是 Apache 2.2 语法,而 OP 肯定使用的是 Apache 2.4 我还要补充一点,这个答案的大部分都是基本的东西,我显然已经根据我的原始问题进行了配置。此外,此答案中没有任何内容专门解决我的问题。

以上是关于多个主机的 wamp vhosts 问题的主要内容,如果未能解决你的问题,请参考以下文章

Wamp 2.5 中的“WAMP/vhosts”文件夹是啥意思?

带有 WAMP 的虚拟主机

wamp 配置虚拟主机

WAMP 虚拟主机不工作

在win7上的不同目录中的wamp 2.5中创建vhost返回禁止错误

在win7上的不同目录中的wamp 2.5中创建vhost返回禁止错误