提问人:user3638431 提问时间:5/15/2014 最后编辑:Hanif Formolyuser3638431 更新时间:10/5/2017 访问量:221611
项目链接在 Wamp Server 上不起作用
Project Links do not work on Wamp Server
问:
我正在另一台计算机上安装 Wamp 服务器以运行中型数据库和 UI。我已经成功地阻止了IIS并将服务器路由到Localhost:8080。但是每当我尝试从 localhost 主页访问我的项目时,在 www 文件中;我被重定向到“找不到页面”错误。
当我将鼠标悬停在链接上方时,目录总是出现“http:// ProjectFolderNameHere /”。当它应该是“http:// LocalHost:8080 / ProjectFolderNameHere /”时。我能做些什么来使链接正常工作?
我的机器在 Windows 7 家庭版 64 位上运行,我已经禁用了 Microsoft 的 IIS。
答:
如何在 WampServer 中创建虚拟主机
WAMPServer 3 使这个过程变得更加容易!
您几乎可以通过作为 WAMPServer 一部分提供的实用程序执行所有操作。
在里面创建一个文件夹来包含您的 project.site。这可以位于目录下,也可以位于完全独立的文件夹中,例如 .
C:\wamp\www\
C:\websites
在您选择的位置内或在
C:\websites\project1\www
c:\wamp\www\project1\www
现在打开localhost,然后单击主页上“工具”部分下的链接。
wampmanager->localhost
Add a Virtual Host
您将看到如下页面:
按照每个字段上方的说明填写字段
将为您创建虚拟主机配置。
现在,您必须重新启动DNS缓存。您可以从 wampmanager 菜单中执行此操作,如下所示。DNS 缓存将重新启动,然后 Apache 也将停止并重新启动。当 wampmanager 图标再次变为绿色时,一切都完成了。
right click wampmanager->Tools->Restart DNS
现在,您必须创建一个简单的文件或将站点安装到上面创建的文件夹中。
index.php
假设您的 VH 被调用,您应该在 WAMPServer 主页的“您的虚拟主机”部分下看到该名称。
project.dev
您可以从此菜单启动站点,或者只需使用地址栏EG中的新域名,站点应该启动。
project1.dev
旧的 WAMPServer 2.5 机制,或者如果您想手动完成所有操作
WampServer 2.5 及更高版本的概念发生了变化,这种变化是有充分理由的!
在 WampServer 中,现在强烈建议为您的每个项目创建一个虚拟主机,即使您将它们保存在一个结构中。\wamp\www\subfolder
WampServer 主页 ( ) 现在要求您为所有项目创建一个虚拟主机,因此只有在您这样做时才能正常工作。\wamp\www\index.php
历史
为了让使用 WampServer 学习 PHP、Apache 和 MySQL 的初学者更轻松,建议您在该文件夹下创建子文件夹。\wamp\www\
wamp
|-- www
|-- Chapter1
|-- Chapter2
|-- etc
然后,这些子文件夹将在 WampServer 主页中显示为名为“您的项目”的菜单下的链接,这些链接将包含指向 .localhost/subfoldername
仅接受简单的教程
这让初学者的生活变得容易,并且完全可以接受,例如,对于那些学习PHP编码的教程的人来说。 但是,它从未打算在开发一个真实的网站时使用,您以后会想要将其复制到您的实时托管服务器。 事实上,如果您确实使用了此机制,它通常会导致问题,因为实时站点配置与您的开发配置不匹配。
真实网站开发的问题。
原因当然是 wamp 的默认 DocumentRoot 设置是
DocumentRoot "c:/wamp/www/"
不管你的子文件夹叫什么。 这种经常使用PHP代码来查询结构或站点的代码,在开发WampServer上运行时收到的信息与在实时托管服务器上运行时接收的信息不同,其中DocumentRoot配置指向网站文件层次结构顶部的文件夹。 这种代码存在于许多框架和 CMS 中,例如 WordPress 和 Joomla 等。
例如
假设我们有一个名为 project1 的项目,并且错误地运行为wamp\www\project1
localhost/project1/index.php
这是一些有问题的PHP命令会报告的内容:
$_SERVER['HTTP_HOST'] = localhost
$_SERVER['SERVER_NAME'] = localhost
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www
现在,如果我们使用虚拟主机定义正确定义了该站点并按其运行方式运行,则 WAMPServer 开发站点上的结果将与在实时托管环境中接收的结果相匹配。http://project1
$_SERVER['HTTP_HOST'] = project1
$_SERVER['SERVER_NAME'] = project1
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1
现在,这种差异乍一看似乎微不足道,但是如果您要使用像WordPress这样的框架或像Joomla这样的CMS之一,那么当您将网站移动到实时服务器时,这可能会并且确实会导致问题。
如何在 WampServer 中创建虚拟主机
实际上,对于任何 wndows Apache 服务器来说,这应该基本相同,只是在您可以找到 Apache 配置文件的位置有所不同。
在 Apache 中创建第一个虚拟主机需要 3 个步骤,如果已经定义了一个虚拟主机,则只需 2 个步骤。
- 创建虚拟主机定义
- 将新域名添加到 HOSTS 文件。
- 取消注释 httpd.conf 中包含虚拟主机定义文件的行。
步骤 1,创建虚拟主机定义
编辑名为 WampServer 所在的文件httpd-hosts.conf
\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf
(Apache版本号可能不同,请先动脑筋再继续)
如果这是您第一次编辑此文件,请删除默认示例代码,它没有任何用处。
我假设我们想为一个名为 project1 的站点创建一个定义,该站点位于
\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>
注意:每个虚拟主机都是自己定义的。您还可以将许多其他参数添加到虚拟主机定义中,请查看 Apache 文档。DocumentRoot
小边
虚拟主机在Apache中的工作方式:此文件中的第一个定义也将是默认站点,因此,如果浏览器中使用的域名与任何实际定义的虚拟托管域不匹配,则将localhost作为文件中的第一个域,因此,如果黑客尝试仅使用您的IP地址,则该站点将使其成为加载的站点。 因此,如果我们确保此域的 Apache 安全性始终设置为
Require local
任何来自外部地址的随意黑客攻击都会收到错误并且不会进入您的 PC,但如果您拼错了域,您将看到 WampServer 主页,因为您与 WampServer 在同一台 PC 上,因此。local
步骤2:
将新域名添加到 HOSTS 文件。 现在,我们需要将虚拟主机定义中使用的域名添加到 HOSTS 文件中,以便 Windows 知道在哪里可以找到它。这类似于创建 DNS A 记录,但在这种情况下,它仅在此特定 PC 上可见。
编辑C:\windows\system32\drivers\etc\hosts
该文件没有扩展名,应保持该状态。注意记事本,因为如果您没有更好的编辑器,它可能会尝试添加扩展。
我建议您下载Notepad ++,它是免费的,是一个非常好的编辑器。.txt
此外,这是一个受保护的文件,因此您必须使用管理员权限对其进行编辑,因此请使用“以管理员身份运行”菜单选项启动编辑器。
完成这些编辑后,hosts 文件应如下所示
127.0.0.1 localhost
127.0.0.1 project1
::1 localhost
::1 project1
请注意,您应该在此处定义 IPV4 环回地址和 IPV6 环回地址,因为 Apache 现在可识别 IPV6,并且浏览器将使用 IPV4 或 IPV6 或两者兼而有之。我不知道它如何决定使用哪个,但是如果您打开了 IPV6 堆栈,并且大多数 Windows 操作系统从 XP SP3 开始都可以使用,那么它就可以使用。127.0.0.1
::1
现在,我们必须告诉窗口刷新其域名缓存,因此再次使用“以管理员身份运行”菜单选项再次启动命令窗口,然后执行以下操作。
net stop dnscache
net start dnscache
这迫使窗口清除其域名缓存并重新加载它,在重新加载时它将重新读取 HOSTS 文件,因此现在它知道域。project1
第 3 步:取消注释 httpd.conf 中包含虚拟主机定义文件的行。
编辑 httpd.conf,使用 wampmanager.exe 菜单确保编辑正确的文件。
在 httpd.conf 中找到此行
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
只需删除要取消注释的那一行。#
要在运行 Apache 的 Apache 中激活此更改,我们现在必须停止并重新启动 Apache 服务。
wampmanager.exe -> Apache -> Service -> Restart Service
现在,如果系统托盘中的 WAMP 图标没有再次变为绿色,则表示您可能在文件中做错了什么。\wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.conf
如果是这样,这里有一个有用的机制来找出问题所在。它使用 Apache exe (httpd.exe) 的一项功能来检查其配置文件并按文件名和行号报告错误。
启动命令窗口。
cd \wamp\bin\apache\apache2.4.9\bin
httpd -t
因此,修复错误并再次重新测试,直到获得输出
Syntax OK
现在还有一件事。
wampmanager 菜单系统上实际上有 2 个新菜单项。一个名为“我的项目”,默认情况下处于打开状态。 第二个称为“我的虚拟主机”,默认情况下未激活。
“我的项目”将列出 \wamp\www 目录的任何子目录,并提供在该子目录中启动站点的链接。 正如我之前所说,它启动的是“project1”而不是“localhost/project1”,因此要使链接正常工作,我们必须创建一个虚拟主机定义,以使此链接在浏览器中实际启动该站点,如果没有虚拟主机定义,它可能会启动站点名称作为关键字的 Web 搜索,或者只是返回未找到站点条件。
“我的虚拟主机”菜单项略有不同。它搜索用于定义虚拟主机的文件(我们将在一分钟内完成),并为它找到的每个 ServerName 参数创建菜单链接,并为每个参数创建一个菜单项。 这似乎有点令人困惑,因为一旦我们为 \wamp\www 文件夹的子目录创建了虚拟主机定义,某些项目将同时出现在“我的项目”菜单和“我的虚拟主机”菜单上。
如何打开其他“我的虚拟主机”菜单?
- 备份 \wamp\wampmanager.tpl 文件,以防万一您出错,这是一个非常重要的文件。
- 编辑 \wamp\wampmanager.tpl
- 找到这个参数,它在“[Menu.Left]”部分。
;WAMPPROJECTSUBMENU
- 在参数之前或之后添加此新参数。
;WAMPVHOSTSUBMENU
;WAMPPROJECTSUBMENU
- 保存文件。
- 现在右键单击 wampmanager 图标,然后选择“刷新”。如果这没有添加菜单,请“退出”并重新启动 wampmanager。
大注意仅当您已经定义了一些虚拟主机时,才会显示新菜单!否则,在定义 VHOST 之前,您不会看到任何区别。
现在,如果您将其带到其逻辑扩展
现在,只需更改 VHOST 定义中的 DocumentRoot 参数,即可将网站代码完全移出文件夹结构。例如,您可以这样做:\wamp\
在 wamp 磁盘或任何其他磁盘上创建一个文件夹(当心网络驱动器,它们有点复杂)
D:
MD websites
CD websites
MD example.com
CD example.com
MD www
现在,您可以将站点代码复制到该文件夹,或开始在该文件夹中创建它,并像这样定义您的虚拟主机:\websites\example.com\www
<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,这意味着我们无法再从这台 PC 访问真正的实时站点,因为它会将 example.com 定向到 127.0.0.1,即这台 PC,而不是互联网。
也: 看到我已允许从 VHOST 定义中的 Internet 访问此站点,此更改仅适用于此站点,不适用于其他站点。非常有用,允许客户端查看您的更改一个小时左右,而无需将它们复制到实时服务器。 这确实意味着我们必须手动编辑此文件以打开和关闭此访问,而不是使用 wampmanager 上的 Put Online/Offline 菜单项。
此外,我还对PHP配置进行了一些修改,同样仅适用于这一个站点。 在维护具有特定要求的站点时非常有用,这与您维护的所有其他站点不同。 我想我们可以从使用的参数中假设它在某处有一个长时间运行的页面,并且它写得非常糟糕,并且不会在浏览器上显示错误的情况下运行,而不会使页面变得一团糟。相信我,这样的网站是存在的,人们仍然希望它们维护得不好。但这意味着我们只需要更改此特定站点的这些参数,而不是全局更改为 WampServer 上运行的所有虚拟站点。
评论
localhost/add_vhost.php
right click wampmanager -> Tools -> Restart DNS
在文件夹中打开并设置index.php
www
$suppress_localhost = false;
这将预置到您的项目链接之前http://localhost/
评论
我相信这是最好的解决方案:
打开 www 文件夹中的索引 .php 并设置
更改线路
10 倍$suppress_localhost = true;
自$suppress_localhost = false;
这将确保项目以本地主机 IP/名称为前缀
评论
right click wampmanager->Wamp Settings->Add localhost to url
回复: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 正在运行,只需刷新本地主机页面,更改就会立即生效。
要修复第 2 项(Wampserver 图标任务栏的“我的项目”列表): 您需要编辑 C:\wamp\scripts\refresh.php
找到第 651 行并更改该行的部分,该行的读法为
Parameters: "http://'.$projectContents[$i].'/"; Glyph: 5
自
Parameters: "http://localhost//'.$projectContents[$i].'/"; Glyph: 5
在进行第二组更改后,您可能需要强制 Wampserver 通过切换 Wamp 图标托盘应用程序底部的“在线/离线”选项来刷新“我的项目”列表。
评论
$suppress_localhost = false;
这对我来说很成功。
如何修复损坏的图标链接(空白.gif,文本.gif等)
不幸的是,如前所述,简单地将虚拟主机添加到您的项目并不能修复损坏的图标链接。
问题:
WAMP/Apache 不会将图标的目录引用更改为相应的安装目录。它被静态设置为“c:/Apache24/icons”,99.9%的用户Apache安装不驻留在这里。尤其是 WAMP。
解决方法:
找到您的 Apache icons 目录!通常,它将位于此处:“c:/wamp/bin/apache/apache2.4.9/icons”。但是,您的里程可能会因安装而异,如果您的 Apache 版本不同,那么您的路径也会有所不同。
在你喜欢的编辑器中打开 httpd-autoindex.conf。这个文件通常可以在这里找到:“C:\wamp\bin\apache\apache2.4.9\conf\extra\httpd-autoindex.conf”。同样,如果您的 Apache 版本不同,那么此路径也会不同。
找到这个定义(通常位于文件顶部附近):
Alias /icons/ "c:/Apache24/icons/" <Directory "c:/Apache24/icons"> Options Indexes MultiViews AllowOverride None Require all granted </Directory>
将“c:/Apache24/icons/”目录替换为您自己的目录。重要在第一个目录引用中必须有一个尾随正斜杠。第二个目录引用不得包含尾部斜杠。您的结果应与此类似。同样,您的目录可能会有所不同:
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服务器,享受您的酷炫图标!
评论
Alias
Alias /icons/ "icons/"
您好,您需要从 wamp 服务器打开索引.php并更改 $suppress_localhost = false;从 $suppress_localhost = true;那么你的 wamp 就会工作正常
评论
检查 WAMP 服务器图标是否为绿色,如果它是绿色的,那么它正在工作,如果不是,那么您必须按照以下步骤进行操作
答:在运行WAMP之前,应关闭所有程序,因为大多数情况下,某些软件(如Skype)使用WAMP使用的相同端口(80)。
b. 您可以更改Skype的端口:Tool-s->oprions->advanced->connection 取消勾选使用端口80
重新启动 WAMP 它将工作。
第二种情况
当您在 Loalhost 中单击项目时,它不会在项目名称前面显示 localhost,因此看起来 WAMP 无法正常工作,因此您只需要一件事
.转到 wamp index.php 文件并更改 $suppress_localhost = false;从 $suppress_localhost = true;反之亦然,它会起作用
导航到您的 www 目录(如果您使用的是 wamp 服务器)htdocs(如果在 XAMPP 上)。打开您的 admin.php 并搜索项目内容/,或者直接转到第 339 行并更改链接,将“本地主机”插入链接。
那应该有效,,
您可以按照所有步骤操作@RiggsFolly这是非常好的答案,如果您不想创建虚拟主机并想像以前的localhost / example/或类似的东西一样使用,则可以通过@Arunu使用答案
但是如果您仍然遇到问题,请使用此方法,
- 找到已安装的 wamp 文件夹(例如 c:/Wamp/)
- 转到 Wamp/万维网/
- 打开索引 .php 文件
- 查找此代码
$projectContents .= '<li><a href="'.($suppress_localhost ? 'http://' : '').$file.'">'.$file.'</a></li>';
- 修改它 添加 localhost 后 http://
$projectContents .= '<li><a href="'.($suppress_localhost ? 'http://localhost' : '').$file.'">'.$file.'</a></li>';
- 重新启动 wamp 服务器
- 打开 localhost 查看更新的链接
希望您像以前版本的 wamp 服务器一样获得您的 url。
评论
我发现按项目创建本地子域并告诉 Apache 按名称为多个站点提供服务要容易得多(比接受的答案要容易得多)。
例如,假设您在 下创建了一个项目,以便能够在 http://mysite.localhost 下访问它,您只需要执行以下操作:c:/wamp64/www/sites/mysite
1.告诉您的机器回答不同的名称 添加到127.0.0.1 mysite.localhost
C:\windows\system32\drivers\etc\hosts
2. 刷新 DNS 缓存 以管理员身份打开命令提示符并键入 ,然后键入 。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 的图标,选择“重启”
5. 定义一个基本 url 转到您的项目文件夹,添加到您的部分以防止 /links 到服务器根目录被破坏。<base href="http://mysite.localhost" />
<head>
就我个人而言,我使用 PHP(类似 )将此 html 代码动态注入到我的模板中,因此我不必费心在生产中将其删除。$site_root = (IS_LOCALHOST) ? '<base href="http://mysite.localhost" />' : null;
为了从主页访问项目,您需要先创建一个虚拟主机。
最简单的方法是使用 Wamp 的 Add a Virtual Host Utility。
只需按照以下步骤操作:
- 在“C:\wamp\www\”目录中创建一个文件夹,并为其指定一个您要为您的站点命名的名称,例如。“我的网站”。因此,路径将为“C:\wamp\www\mysite”。
- 现在在浏览器中打开 localhost 的主页,在“工具”菜单下单击“添加虚拟主机”链接。
- 输入虚拟主机的名称,该名称必须是我们在 www 目录中创建的文件夹的名称,即“mysite”。
- 输入虚拟主机的绝对路径,即不带引号的“C:\wamp\www\mysite\”,然后单击下面的按钮说“开始创建虚拟主机”。
- 虚拟主机已创建,现在您只需要“重新启动 DNS”。为此,右键单击 wamp 服务器的托盘菜单图标,单击“工具”>“重新启动 DNS”,然后让托盘菜单图标再次变为绿色。
- 一切准备就绪!现在只需在“C:\wamp\www\mysite\”目录中创建“index.php”页面。在“index.php”文件中添加一些代码,例如
<?php echo "<h1>Hello World</h1>"; ?>
现在,您可以从 localhost 的主页访问这些项目。只需单击项目链接,您就会在屏幕上看到“Hello World”。
评论
这适用于 Wamp 3+。
- 转到 wamp 文件夹(wamp/ 或 wamp64/)
- 打开 wampmanager.conf
- 找到 urlAddLocalhost 参数并将其设置为:
urlAddLocalhost = "on"
应该不需要调整 www 文件夹中的索引 .php。
评论