Wamp服务器2.5错页重定向

Aru*_*run 8 url redirect wamp

我用PHP 5.5安装了wamp server 2.5.现在,当我尝试从首页(wamp主页)访问我的项目页面时,它会重定向到错误的网址并显示谷歌无法找到此页面.

问题的定义是

我进入wamp使用 http://localhost

我有很多项目.假设我点击了sample_project

然后页面重定向到 sample_projects/

Google Chrome会显示错误 chrome cannot find this webpage

在我的wamp PHP扩展区域中有两个字段是swown红色标记.他们是php_enchantphp_opcache

我的wamp有什么问题?我错过了什么吗?请帮忙

小智 31

老实说,我认为为每个单一项目创建虚拟主机非常低效.因此在调查后我发现了一个关键变量:

wamp/www/index.php.
Run Code Online (Sandbox Code Playgroud)

快速分析后,变量的明显目的是删除项目链接中的"localhost".

改变这一行:

$suppress_localhost = true;
Run Code Online (Sandbox Code Playgroud)

对此:

$suppress_localhost = false;
Run Code Online (Sandbox Code Playgroud)


Rig*_*lly 9

WAMPServer 2.5主页您的项目菜单和虚拟主机

WampServer 2.5中的概念发生了变化,这是一个很好的理由!

在WampServer 2.5中,现在强烈建议您为每个项目创建一个虚拟主机,即使您在一个\wamp\www\subfolder结构中保留它也是如此.

虚拟主机文档

虚拟主机示例

WampServer主页(\ wamp\www\index.php)现在希望您为所有项目创建虚拟主机,因此只有在您这样做时才能正常工作.

历史

为了让使用WampServer学习PHP Apache和MySQL的初学者的生活更轻松,建议您在该\wamp\www\文件夹下创建子文件夹.

wamp
  |-- www
       |-- Chapter1
       |-- Chapter2
       |-- etc
Run Code Online (Sandbox Code Playgroud)

然后,这些子文件夹将显示为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
Run Code Online (Sandbox Code Playgroud)

现在,如果我们使用虚拟主机定义正确定义了该站点并运行它,因为http://project1WAMPServer开发站点上的结果将与在实时托管环境中收到的结果相匹配.

$_SERVER['HTTP_HOST'] = project1
$_SERVER['SERVER_NAME'] = project1
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1
Run Code Online (Sandbox Code Playgroud)

现在这种差异看起来似乎微不足道,但是如果您使用像WordPress这样的框架或者像Joomla这样的CMS之一,那么当您将站点移动到实时服务器时,这会导致问题.

如何在WampServer中创建虚拟主机

实际上,对于任何wndows Apache服务器,这应该基本相同,只是在你可能找到Apache配置文件的地方有所不同.

在Apache中创建第一个虚拟主机有3个步骤,如果已经定义了一个,则只有2个步骤.

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

步骤1,创建虚拟主机定义

编辑httpd-hosts.confWampServer所在的文件

\wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.conf
Run Code Online (Sandbox Code Playgroud)

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

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

我假设我们想要为一个名为project1的网站创建一个定义

\wamp\www\project1
Run Code Online (Sandbox Code Playgroud)

非常重要,首先我们必须确保localhost仍然有效,这是我们将放在此文件中的第一个VHOST定义.

<VirtualHost *:80>
    DocumentRoot "c:/wamp/www"
    ServerName localhost
    ServerAlias localhost
    <Directory  "c:/wamp/www">
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

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

<VirtualHost *:80>
    DocumentRoot "c:/wamp/www/project1"
    ServerName project1
    <Directory  "c:/wamp/www/project1">
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

注意:将每个虚拟主机DocumentRoot定义为自己定义的.您还可以向虚拟主机定义添加许多其他参数,请查看Apache文档.

小一点

虚拟主机在Apache中的工作方式:此文件中的第一个定义也将是默认站点,因此浏览器中使用的域名与实际定义的虚拟托管域不匹配,因此将localhost作为文件中的第一个域将使如果黑客企图只使用您的IP地址,则加载该站点.因此,如果我们确保此域的Apache安全性始终设置为

Require local
Run Code Online (Sandbox Code Playgroud)

来自外部地址的任何随意破解都会收到错误而不会进入您的PC,但是如果您错过了一个域,您将会看到WampServer主页,因为您与WampServer在同一台PC上local.

第二幕:

将新域名添加到HOSTS文件.现在我们需要将我们在虚拟主机定义中使用的域名添加到HOSTS文件中,以便Windows知道在哪里找到它.这与创建DNS A记录类似,但仅在此特定PC上可见.

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

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

此外,这是受保护的文件,因此您必须使用管理员权限进行编辑,因此请使用"以管理员身份运行"菜单选项启动编辑器.

完成这些编辑后,hosts文件应如下所示

127.0.0.1 localhost
127.0.0.1 project1

::1 localhost
::1 project1
Run Code Online (Sandbox Code Playgroud)

请注意,此处应该有IPV4环回地址127.0.0.1和IPV6环回地址的定义,::1因为Apache现在可以识别IPV6,浏览器将使用IPV4或IPV6或两者.我不知道它如何决定使用哪个,但如果你打开了IPV6堆栈,它可以使用,而大多数窗口操作系统都可以使用XP SP3.

现在我们必须告诉Windows刷新其域名缓存,因此再次使用"以管理员身份运行"菜单选项再次启动命令窗口,然后执行以下操作.

net stop dnscache
net start dnscache
Run Code Online (Sandbox Code Playgroud)

这会强制窗口清除其域名缓存并重新加载它,在重新加载时它会重新读取HOSTS文件,所以现在它知道域名project1.

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

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

在httpd.conf中找到这一行

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
Run Code Online (Sandbox Code Playgroud)

然后删除#以取消注释该行.

要在运行Apache时激活此更改,我们现在必须停止并重新启动Apache服务.

wampmanager.exe -> Apache -> Service -> Restart Service
Run Code Online (Sandbox Code Playgroud)

现在,如果系统托盘中的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
Run Code Online (Sandbox Code Playgroud)

因此,修复错误并重新测试,直到获得输出

Syntax OK
Run Code Online (Sandbox Code Playgroud)

现在还有一件事.

wampmanager菜单系统上实际上有2个新菜单项.一个叫[b]'我的项目'[/ b],默认打开.第二个,称为[b]'我的虚拟主机'[/ b],默认情况下不会激活.

"我的项目"将列出\ wamp\www目录的任何子目录,并提供在该子目录中启动站点的链接.正如我之前所说,它启动'project1`而不是'localhost/project1'所以为了使链接工作,我们必须创建一个虚拟主机定义,以使这个链接实际在您的浏览器中启动该站点,而没有虚拟主机定义它可能启动网站搜索作为关键字的网站名称或只返回找不到网站的条件.

"我的虚拟主机"菜单项略有不同.它搜索用于定义虚拟主机的文件(我们将在一分钟内完成)并为它找到的每个ServerName参数创建菜单链接,并为每个创建一个菜单项.这可能看起来有点混乱,因为一旦我们为\ wamp\www文件夹的子目录创建虚拟主机定义,一些项目将出现在"我的项目"菜单和"我的虚拟主机"菜单上.

如何打开其他"我的虚拟主机"菜单?

  • 备份\ wamp\wampmanager.tpl文件,以防万一你弄错了,这是一个非常重要的文件.
  • 编辑\ wamp\wampmanager.tpl
  • ;WAMPPROJECTSUBMENU在'[Menu.Left]'部分中找到此参数.
  • ;WAMPVHOSTSUBMENU在参数之前或之后添加此新;WAMPPROJECTSUBMENU参数.
  • 保存文件.
  • 现在右键单击wampmanager图标,然后选择"刷新".如果这不添加菜单,则"退出"并重新启动wampmanager.

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