我在wamp本地主机中有2个codeigniter项目,我正在尝试设置多个虚拟主机。
我的目录结构是这样的:
- www
- project
- projectold
我设置了2个虚拟主机:project.lh
和projectold.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。
答案 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
现在,我们将打开文件“ 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/
过去帮助过我。