多个主机的 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.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。
【问题讨论】:
你没有提到你在 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”文件夹是啥意思?