项目链接在Wamp服务器上不起作用

我正在另一台计算机上安装Wamp Server来运行中型数据库和UI。 我已经成功阻止IIS并将服务器路由到本地主机:8080。 但是每当我尝试访问我的项目从localhost主页,在www文件中; 我被redirect到页面未find错误。

当我hover在链接上时,目录总是出现“http:// ProjectFolderNameHere /”。 当它应该是“http:// LocalHost:8080 / ProjectFolderNameHere /”。 我能做些什么来使链接正常工作?

我的机器在Windows 7 Home Edition 64位上运行,并且我已经禁用了Microsoft的IIS。

如何在WampServer中创build一个虚拟主机


WAMPServer 3使这个过程更容易!

您可以使用作为WAMPServer一部分提供的实用程序几乎做任何事情。

  • 在里面创build一个文件夹来包含你的project.site。 这可以在C:\wamp\www\目录下,或者在一个完全独立的文件夹如C:\websites

  • 在您select的位置EG C:\websites\project1\www或在c:\wamp\www\project1\www下创build一个文件夹

  • 现在打开localhost wampmanager->localhost并点击主页上TOOLS部分的链接Add a Virtual Host

你会看到这样的一个页面:

在这里输入图像描述

  • 按照每个字段上方的说明填写字段

  • 虚拟主机configuration将为您创build。

  • 现在您必须重新启动DNScaching。 你可以从wampmanager菜单中这样做,如right click wampmanager->Tools->Restart DNS 。 DNScaching将重新启动,然后Apache也将停止并重新启动。 当pipe理员图标再次变绿时,全部完成。

  • 现在,您必须创build一个简单的index.php文件或将您的网站安装到上面创build的文件夹中。

  • 假设您的VH被称为project.dev您应该在WAMPServer主页的虚拟主机部分下看到该名称。

  • 您可以从此菜单启动站点,或者只需使用地址栏EG project1.dev的新域名和站点启动。


旧的WAMPServer 2.5机制,或者如果你想手动完成这一切

WampServer 2.5及以上版本的概念已经发生了变化,这是一个很好的理由!

在WampServer中,现在强烈build议为每个项目创build一个虚拟主机,即使您将其保存在\wamp\www\subfolder结构中。

虚拟主机文档

虚拟主机示例

WampServer主页( \wamp\www\index.php )现在希望您已经为您的所有项目创build了一个虚拟主机,因此只有在这样做的情况下才能正常工作。

历史

为了使初学者更容易使用WampServer学习PHP Apache和MySQL,build议您在\wamp\www\文件夹下创build子文件夹。

 wamp |-- www |-- Chapter1 |-- Chapter2 |-- etc 

这些子文件夹将显示为WampServer主页下的一个名为“Your Projects”的菜单中的链接,这些链接将包含到localhost/subfoldername的链接。

只接受简单的教程

这对于完整的初学者来说使生活变得容易,并且对于那些接下来的教程来学习PHP编码是完全可以接受的。 但是,在开发一个真正的网站时,它并不打算用于以后要复制到您的托pipe服务器。 事实上,如果您确实使用了这种机制,则通常会导致问题,因为活动站点configuration与您的开发configuration不匹配。

真正的网站开发的问题

原因当然是wamp的默认DocumentRoot设置是

DocumentRoot "c:/wamp/www/"

不pipe你的子文件夹被调用。 这种经常使用PHP代码来查询结构或您的网站在开发WampServer上运行时收到的信息与运行在实时托pipe服务器上时所获得的信息不同,此时DocumentRootconfiguration指向网站顶部的文件夹文件层次结构 这种代码存在于许多框架和CMS中,例如WordPress和Joomla等。

例如

假设我们在wamp\www\project1有一个名为project1的项目,并以localhost/project1/index.php运行不正确

这就是所讨论的一些PHP命令会报告的内容:

 $_SERVER['HTTP_HOST'] = localhost $_SERVER['SERVER_NAME'] = localhost $_SERVER['DOCUMENT_ROOT'] = c:/wamp/www 

现在,如果我们已经使用虚拟主机定义正确定义了该站点,并将其作为http://project1运行,则WAMPServer开发站点上的结果将与在实时托pipe环境中收到的结果相匹配。

 $_SERVER['HTTP_HOST'] = project1 $_SERVER['SERVER_NAME'] = project1 $_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1 

现在,这种差异可能看起来微不足道,但是如果您使用的是像WordPress这样的框架,或者像Joomla这样的CMS之一,那么当您将您的网站移动到活动服务器时,这可能会引发问题。

如何在WampServer中创build一个虚拟主机

实际上,对于任何的Apache服务器来说,这应该基本上是一样的,只有在你可能findApacheconfiguration文件的地方才有区别。

在Apache中创build第一个虚拟主机有三个步骤,如果您已经定义了一个虚拟主机,则只有两个步骤。

  1. 创build虚拟主机定义
  2. 将您的新域名添加到HOSTS文件。
  3. 取消注释包含虚拟主机定义文件的httpd.conf中的行。

步骤1 ,创build虚拟主机定义(s)

编辑WampServer所在的名为httpd-hosts.conf的文件

 \wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf 

(Apache的版本号可能不同,在继续之前搞大脑)

如果这是您第一次编辑此文件,请删除默认的示例代码,这是没有用的。

我假设我们要为一个名为project1的站点创build一个定义

 \wamp\www\project1 

非常重要的一点是,首先我们必须确保localhost仍然可以正常工作,这是我们将要放入这个文件的第一个VHOST定义。

 <VirtualHost *:80> DocumentRoot "c:/wamp/www" ServerName localhost ServerAlias localhost <Directory "c:/wamp/www"> Options Indexes FollowSymLinks AllowOverride All Require local </Directory> </VirtualHost> 

现在我们定义我们的项目:当然,当你开始一个新的项目时,你会为你的每个项目做一些事情。

 <VirtualHost *:80> DocumentRoot "c:/wamp/www/project1" ServerName project1 <Directory "c:/wamp/www/project1"> Options Indexes FollowSymLinks AllowOverride All Require local </Directory> </VirtualHost> 

注:将每个虚拟主机作为自己的DocumentRoot定义。 还有许多其他参数可以添加到虚拟主机定义中,请查看Apache文档。

放在一边

虚拟主机在Apache中的工作方式:此文件中的第一个定义也是默认的站点,所以如果浏览器中使用的域名不匹配任何实际定义的虚拟主机域,则使localhost成为文件中的第一个域名它是一个黑客企图只是使用您的IP地址加载的网站。 所以如果我们确保这个域的Apache安全性总是被设置的话

 Require local 

任何来自外部地址的随意黑客都会收到错误信息,而不会进入你的电脑,但是如果你拼错一个域名,你将会看到WampServer主页,因为你和WampServer在同一台计算机上,因此在local

第2步

将您的新域名添加到HOSTS文件。 现在我们需要将我们在虚拟主机定义中使用的域名添加到HOSTS文件,以便Windows知道在哪里find它。 这与创buildDNS Alogging相似,但在此特定PC上只能看到这种情况。

编辑C:\windows\system32\drivers\etc\hosts

该文件没有扩展名,应该保持这种方式。 注意记事本,因为它可能会尝试并添加一个.txt扩展名,如果你没有更好的编辑器。 我build议你下载Notepad ++,它的免费和一个非常好的编辑器。

此外,这是一个受保护的文件,因此您必须使用pipe理员权限进行编辑,所以使用“以pipe理员身份运行”菜单选项启动编辑器

主机文件应该看起来像这样,当你完成这些编辑

 127.0.0.1 localhost 127.0.0.1 project1 ::1 localhost ::1 project1 

请注意,您应该在此处定义IPV4环回地址127.0.0.1以及IPV6环回地址::1因为Apache现在可以识别IPV6,浏览器将使用IPV4或IPV6或两者都使用。 我不知道如何决定使用哪一个,但是如果你打开了IPV6堆栈,它也可以使用,而且大部分的Windows操作系统都是在XP SP3下运行的。

现在我们必须告诉windows刷新它的域名caching,所以再次使用“以pipe理员身份运行”菜单选项启动一个命令窗口,然后执行以下操作。

 net stop dnscache net start dnscache 

这迫使Windows清除它的域名caching并重新加载它,在重新加载它将重新读取HOSTS文件,所以现在它知道域project1

步骤3 :取消注释包含虚拟主机定义文件的httpd.conf中的行。

编辑你的httpd.conf,使用wampmanager.exe菜单确保你编辑正确的文件。

在httpd.conf中find这一行

 # Virtual hosts #Include conf/extra/httpd-vhosts.conf 

只要删除#取消注释该行。

要在运行Apache时激活这个变化,我们现在必须停止并重新启动Apache服务。

 wampmanager.exe -> Apache -> Service -> Restart Service 

现在,如果系统托盘中的WAMP图标不再变绿,这意味着您可能在\wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.conf文件中做了一些错误。

如果是这样,这是一个有用的机制,找出什么是错的。 它使用Apache exe(httpd.exe)的function来检查其configuration文件,并通过文件名和行号报告错误。

启动一个命令窗口。

 cd \wamp\bin\apache\apache2.4.9\bin httpd -t 

所以修复错误并重新testing,直到你得到输出

 Syntax OK 

现在还有一件事。

wampmanager菜单系统实际上有2个新的菜单项。 一个名为“我的项目” ,默认打开。 第二个叫做“我的虚拟主机” ,默认情况下是不启动的。

“我的项目”将列出\ wamp \ www目录的任何子目录,并提供一个链接来启动该子目录中的站点。 正如我前面所说,它启动'project1`而不是'localhost / project1',所以为了使链接工作,我们必须创build一个虚拟主机的定义,使得这个链接实际上在你的浏览器启动该网站,没有虚拟主机的定义,启动网站search作为关键字的网站名称或只是返回一个网站未find的条件。

“我的虚拟主机”菜单项有一些不同。 它search用来定义虚拟主机的文件(我们将在一分钟内得到),并为每个find的ServerName参数创build菜单链接,并为每个参数创build一个菜单项。 这似乎有点令人困惑,因为一旦我们为\ wamp \ www文件夹的子目录创build虚拟主机定义,某些项目将出现在“我的项目”菜单和“我的虚拟主机”菜单上。

如何打开这个“我的虚拟主机”菜单?

  • 做一个\ wamp \ wampmanager.tpl文件的备份,以防万一你犯了一个错误,它是一个非常重要的文件。
  • 编辑\ wamp \ wampmanager.tpl
  • find这个参数;WAMPPROJECTSUBMENU ,它在'[Menu.Left]'部分。
  • ;WAMPPROJECTSUBMENU参数之前或之后添加这个新参数;WAMPVHOSTSUBMENU
  • 保存文件。
  • 现在右键单击wampmanager图标,然后select“刷新”。 如果这不添加菜单,“退出”并重新启动wampmanager。

大提示新菜单只有在您已经定义了一些虚拟主机的情况下才会出现! 否则在定义VHOST之前,您将看不到任何区别。

现在,如果你把它的逻辑扩展

现在,您只需通过更改VHOST定义中的DocumentRoot参数,即可将网站代码完全移到\wamp\文件夹结构之外。 例如,你可以这样做:

在wamp磁盘或其他磁盘上创build一个文件夹(小心networking驱动器,它们有点复杂)

 D: MD websites CD websites MD example.com CD example.com MD www 

您现在将您的网站代码复制到\websites\example.com\www文件夹并开始创build它,并像这样定义您的VHOST:

 <VirtualHost *:80> DocumentRoot "d:/websites/example.com/www" ServerName example.dev ServerAlias www.example.dev <Directory "d:/websites/example.com/www"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> php_flag display_errors Off php_flag log_errors On php_value max_upload_size 40M php_value max_execution_time 60 php_value error_log "d:/wamp/logs/example_com_phperror.log" </VirtualHost> 

然后将这个新的开发域添加到HOSTS文件中:

 127.0.0.1 localhost ::1 localhost 127.0.0.1 project1 ::1 project1 127.0.0.1 example.dev ::1 example.dev 

注意: 使用与您的实时域名相同的ServerName或ServerAlias并不是一个好主意,就像我们使用example.com作为ServerName一样,这意味着我们不能再从这个实际的活动站点个人电脑,因为它将指导example.com到127.0.0.1即这台电脑,而不是在互联网上。

另外:看到我已经允许这个网站从VHOST定义的互联网上访问,这个改变将适用于只有这个网站,没有其他。 非常有用的允许客户查看您的更改一个小时左右,而不必将其复制到实时服务器。 这意味着我们必须手动编辑这个文件来打开和closures这个访问,而不是使用wampmanager上的Put Online / Offline菜单项。

此外,我已经添加了一些修改PHP的configuration,这将只适用于这一个网站。 在维护具有特定要求的网站时,这一点非常有用,与您维护的其他网站不同。 我想我们可以从使用的参数中假设它有一个长期运行的页面,它是非常糟糕的写入,不会在浏览器上显示错误而不会使页面变得糟糕。 相信我这样的网站存在,人们仍然希望他们保持严重 。 但是这意味着我们只需要更改这个特定站点的这些参数,而不是全局更改到运行在WampServer上的所有虚拟站点。

我相信这是最好的解决scheme:

在www文件夹中打开index.php并设置

换行30: $suppress_localhost = true;

$suppress_localhost = false;

这将确保项目以您的本地主机IP /名称为前缀

www文件夹中打开index.php并设置

 $suppress_localhost = false; 

这将预先安装http://localhost/到您的项目链接

要从主页访问项目,您需要先创build一个虚拟主机

最简单的方法是使用Wamp的添加虚拟主机实用程序。

只需按照以下步骤操作

  1. “C:\ wamp \ www \”目录下创build一个文件夹,然后给它一个你想要给你的网站的名字。 ' mysite '。 所以path将是“C:\ wamp \ www \ mysite”
  2. 现在在浏览器中打开本地主机的主页,在工具菜单下点击添加虚拟主机链接。
  3. input虚拟主机的名称,该名称必须是我们在www目录内创build的文件夹的名称,即' mysite '。
  4. input虚拟主机的绝对path ,例如不带引号的“C:\ wamp \ www \ mysite \” ,然后点击下面的button“开始创buildVirtualHost”
  5. 虚拟主机创build,现在你只需要'重新启动DNS' 。 为此,请右键单击wamp服务器的托盘菜单图标,单击工具>重新启动DNS,然后让托盘菜单图标再次变为绿色。
  6. 可以了,好了! 现在只需在“C:\ wamp \ www \ mysite \”目录下创build'index.php'页面。 在'index.php'文件中添加一些代码,如
    <?php echo "<h1>Hello World</h1>"; ?>

现在您可以从本地主机的主页上访问项目。 只需点击项目链接,就会在屏幕上看到“Hello World”。

如何修复断开的图标链接(blank.gif,text.gif等)

不幸的是,如前所述,简单地添加一个虚拟主机到您的项目不会修复损坏的图标链接。

问题:

WAMP / Apache不会将图标的目录参考更改为相应的安装目录。 它静态设置为“c:/ Apache24 /图标”,Apache安装不在此处的用户有99.9%。 特别是用WAMP。

修正:

  1. find你的Apache图标目录! 通常它将位于这里:“c:/wamp/bin/apache/apache2.4.9/icons”。 然而,你的里程可能会有所不同,取决于你的安装,如果你的Apache版本是不同的,那么你的path也会不同。

  2. 在你最喜欢的编辑器中打开httpd-autoindex.conf。 这个文件通常可以在这里find:“C:\ wamp \ bin \ apache \ apache2.4.9 \ conf \ extra \ httpd-autoindex.conf”。 同样,如果你的Apache版本不同,那么这个path也是如此。

  3. find这个定义(通常位于文件顶部附近):

     Alias /icons/ "c:/Apache24/icons/" <Directory "c:/Apache24/icons"> Options Indexes MultiViews AllowOverride None Require all granted </Directory> 
  4. 用你自己的replace“c:/ Apache24 /图标/”目录。 重要你必须在第一个目录引用中有一个尾随的正斜杠。 第二个目录引用必须没有结尾的斜杠。 你的结果应该看起来类似于这个。 再一次,你的目录可能不同:

     Alias /icons/ "c:/wamp/bin/apache/apache2.4.9/icons/" <Directory "c:/wamp/bin/apache/apache2.4.9/icons"> Options Indexes MultiViews AllowOverride None Require all granted </Directory> 
  5. 重新启动你的Apache服务器,享受你的酷图标!

你可以按照@RiggsFolly的所有步骤,这是非常好的答案,如果你不想创build虚拟主机,并希望像以前的localhost / example /或类似的东西,可以使用@Arunu

但如果你仍然面临问题,请使用这种方法,

  1. find您的wamp文件夹(例如c:/ Wamp /),您已安装
  2. 转到Wamp / www /
  3. 打开index.php文件
  4. find这个代码$projectContents .= '<li><a href="'.($suppress_localhost ? 'http://' : '').$file.'">'.$file.'</a></li>';
  5. 在http:// $projectContents .= '<li><a href="'.($suppress_localhost ? 'http://localhost' : '').$file.'">'.$file.'</a></li>';
  6. 重新启动wamp服务器
  7. 打开本地主机看到更新的链接

希望你有像以前版本的wamp服务器的url。

Re:Wampserver的LocalHost链接无法正常工作
这是截至2014年6月Wampserver2.5(也许他们将在以后的版本中解决这个问题)。
注意:要使用LocalHost:8080而不是LocalHost,只需在下面提到的编辑中进行相应的更改。

这个问题有两个方面 –
首先是能够从Wamp localhost主页访问“您的项目”下的项目。
第二个是能够正确访问在Wampserver图标任务栏的“我的项目”列表中列出的项目。

要修复第一个(要能够从Wamp localhost主页访问“您的项目”下的项目),您将需要执行以下操作…

您必须在位于wamp \ www文件夹(通常为C:\ wamp \ www)的index.php文件中进行2次编辑

1) 30号线改变

  $suppress_localhost = true; 

  $suppress_localhost = false; 

2) 在线338改变

  $projectContents .= '<li><a href="'.($suppress_localhost ? 'http://' : '').$file.'">'.$file.'</a></li>'; 

  $projectContents .= '<li><a href="'.($suppress_localhost ? 'http://' : 'http://localhost//').$file.'">'.$file.'</a></li>'; 

完成上述编辑之后 – 如果Wampserver正在运行,只刷新本地主机页面,更改立即生效。

要修复第二项(Wampserver图标任务栏的“我的项目”列表):您需要编辑C:\ wamp \ scripts \ refresh.php

find行651并更改读取行的部分

  Parameters: "http://'.$projectContents[$i].'/"; Glyph: 5 

  Parameters: "http://localhost//'.$projectContents[$i].'/"; Glyph: 5 

在进行第二组更改后,可能需要强制Wampserver通过切换Wamp图标托盘应用程序底部的Put Put / Offline选项来刷新“我的项目”列表。

 $suppress_localhost = false; 

这为我做了诡计。

  1. 检查WAMP服务器图标是否绿色,如果它是绿色的,那么它正在工作,如果没有,那么你必须按照这些步骤来做

    一个。 所有的程序都应该在运行wamp之前closures,因为大多数情况下,一些像skype这样的软件会使用wamp使用的同一个端口(80)。

    湾 您可以更改Skype的端口:工具 – > oprions->高级 – >连接取消使用端口80

  2. 重新启动它将工作的瓦特。

第二种情况

  1. 当你点击loalhost中的项目时,它不显示项目名称的本地主机infront,因为它看起来像wamp不工作,那么你只有一件事情

    。 去ww index.php文件并改变$ suppress_localhost = false; 从$ suppress_localhost = true; 或反之亦然,它将工作

导航到您的www目录(如果您使用的是wamp服务器)htdocs(如果在XAMPP上)。 打开你的admin.php并search项目内容/或直接转到行号339并更改链接,将“本地主机”插入链接。

这应该工作,

这适用于Wamp 3+。

  • 去wamp文件夹(wamp /或wamp64 /)
  • 打开wampmanager.conf
  • findurlAddLocalhost参数并设置它: urlAddLocalhost = "on"

不应该需要调整www文件夹中的index.php。

我发现按项目创build一个本地子域比告诉Apache更容易(比接受的答案)并且告诉Apache通过名字服务多个站点。

例如,假设您在c:/wamp64/www/sites/mysite下创build了一个项目,以便能够通过http://mysite.localhost访问它,您只需执行以下操作:

1.告诉你的机器回答不同的名字把 127.0.0.1 mysite.localhost添加到C:\windows\system32\drivers\etc\hosts

2.刷新您的DNScaching以pipe理员身份打开命令提示符并键入net stop dnscache ,然后net start dnscache

3.告诉Apache在哪里查看点击Wamp在托盘中的图标,进入Apache – > httpd.conf,最后添加:

 # Tells Apache to identify which site by name NameVirtualHost *:80 # Tells Apache to serve the default WAMP Server page to "localhost" <VirtualHost 127.0.0.1> ServerName localhost DocumentRoot "C:/wamp/www" </VirtualHost> # Tells Apache to serve Client 1's pages to "client1.localhost" # Duplicate and modify this block to add another client <VirtualHost 127.0.0.1> # The name to respond to ServerName client1.localhost # Folder where the files live DocumentRoot "C:/wamp64/www/sites/mysite" # A few helpful settings... <Directory "C:/wamp64/www/sites/mysite"> allow from all order allow,deny # Enables .htaccess files for this site AllowOverride All </Directory> # Apache will look for these two files, in this order, if no file is specified in the URL DirectoryIndex index.html index.php </VirtualHost> 

( 来源 )

4.重启Apache点击托盘中的Wamp图标,select“重启”

5.定义一个基础url转到你的项目文件夹,向<head>部分添加<base href="http://mysite.localhost" />以防止/链接到服务器根目录被破坏。

就个人而言,我使用PHPdynamic注入这个HTML代码到我的模板(类似$site_root = (IS_LOCALHOST) ? '<base href="http://mysite.localhost" />' : null; )所以我没有去打扰一下生产上的麻烦。

你好,你需要从wamp服务器打开index.php并更改$ suppress_localhost = false; 从$ suppress_localhost = true; 那么你的wamp将会正常工作