项目链接在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第一个虚拟主机有三个步骤,如果您已经定义了一个虚拟主机,则只有两个步骤。
- 创build虚拟主机定义
- 将您的新域名添加到HOSTS文件。
- 取消注释包含虚拟主机定义文件的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的添加虚拟主机实用程序。
只需按照以下步骤操作
- 在“C:\ wamp \ www \”目录下创build一个文件夹,然后给它一个你想要给你的网站的名字。 ' mysite '。 所以path将是“C:\ wamp \ www \ mysite” 。
- 现在在浏览器中打开本地主机的主页,在工具菜单下点击添加虚拟主机链接。
- input虚拟主机的名称,该名称必须是我们在www目录内创build的文件夹的名称,即' mysite '。
- input虚拟主机的绝对path ,例如不带引号的“C:\ wamp \ www \ mysite \” ,然后点击下面的button“开始创buildVirtualHost” 。
- 虚拟主机创build,现在你只需要'重新启动DNS' 。 为此,请右键单击wamp服务器的托盘菜单图标,单击工具>重新启动DNS,然后让托盘菜单图标再次变为绿色。
- 可以了,好了! 现在只需在“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。
修正:
-
find你的Apache图标目录! 通常它将位于这里:“c:/wamp/bin/apache/apache2.4.9/icons”。 然而,你的里程可能会有所不同,取决于你的安装,如果你的Apache版本是不同的,那么你的path也会不同。
-
在你最喜欢的编辑器中打开httpd-autoindex.conf。 这个文件通常可以在这里find:“C:\ wamp \ bin \ apache \ apache2.4.9 \ conf \ extra \ httpd-autoindex.conf”。 同样,如果你的Apache版本不同,那么这个path也是如此。
-
find这个定义(通常位于文件顶部附近):
Alias /icons/ "c:/Apache24/icons/" <Directory "c:/Apache24/icons"> Options Indexes MultiViews AllowOverride None Require all granted </Directory>
-
用你自己的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>
-
重新启动你的Apache服务器,享受你的酷图标!
你可以按照@RiggsFolly的所有步骤,这是非常好的答案,如果你不想创build虚拟主机,并希望像以前的localhost / example /或类似的东西,可以使用@Arunu
但如果你仍然面临问题,请使用这种方法,
- find您的wamp文件夹(例如c:/ Wamp /),您已安装
- 转到Wamp / www /
- 打开index.php文件
- find这个代码
$projectContents .= '<li><a href="'.($suppress_localhost ? 'http://' : '').$file.'">'.$file.'</a></li>';
- 在http://
$projectContents .= '<li><a href="'.($suppress_localhost ? 'http://localhost' : '').$file.'">'.$file.'</a></li>';
- 重新启动wamp服务器
- 打开本地主机看到更新的链接
希望你有像以前版本的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;
这为我做了诡计。
-
检查WAMP服务器图标是否绿色,如果它是绿色的,那么它正在工作,如果没有,那么你必须按照这些步骤来做
一个。 所有的程序都应该在运行wamp之前closures,因为大多数情况下,一些像skype这样的软件会使用wamp使用的同一个端口(80)。
湾 您可以更改Skype的端口:工具 – > oprions->高级 – >连接取消使用端口80
-
重新启动它将工作的瓦特。
第二种情况
-
当你点击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将会正常工作