多个主机的虚拟主机问题

时间:2018-09-26 21:12:03

标签: php codeigniter wampserver php-7 vhosts

我在wamp本地主机中有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。

1 个答案:

答案 0 :(得分:-1)

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

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

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

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

转到该目录后,使用您喜欢的文本编辑器(例如记事本,Editplus,记事本++)打开该目录中名为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/

过去帮助过我。