首页 > 解决方案 > 多个主机的 wamp vhosts 问题

问题描述

我的 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。

标签: phpcodeigniterwampserverphp-7vhosts

解决方案


在 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

删除行前的#号,修改后的行应如下所示: Include 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/

过去帮助过我。


推荐阅读