WAMP – 从项目URL中删除本地主机

我在WAMP中的项目的url没有像我期望的那样得到解决。 例如,我希望文件夹c:\ wamp \ www \ project1中的项目具有URL http:// project1 / ,但实际上它具有URL http:// localhost / project1 / 。

访问服务器variables时可能会导致问题。 我该如何解决?

实际上,这个改变是WAMPserver开发者的目的,也是一个很好的理由。

使用localhost/project1 url和默认的WAMPserver DocumentRoot存在一个问题,如果您使用的代码依赖于了解有关服务器环境的任何信息,则会导致某些框架和WordPress类型环境以及您自己的代码出现问题。

正确的解决方案是为所有项目创建虚拟主机,甚至是存储在\wamp\www\project1样式文件夹中的虚拟主机。

这样做时,DocumentRoot是\wamp\www ,这就是导致这些问题的原因。

这些工具希望DocumentRoot成为网站的根,例如\wamp\www\project1这样当他们使用PHP变量

 $_SERVER['HTTP_HOST'] $_SERVER['SERVER_NAME'] $_SERVER['DOCUMENT_ROOT'] 

他们得到正确的答案,即他们将得到一个真正的现场服务器托管的网站的答案。

所以使用localhost\project1风格的URL将意味着这些变量将返回

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

什么时候应该回来

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

因此,您应该如何使“ My Projects菜单正常工作,并减少将网站复制到活动服务器的麻烦:

在HOSTS文件中为每个项目创建一个条目,记住创建一个通过IPV4(127.0.0.1)访问,另一个通过IPV6(:: 1)访问:

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

请记住在对此文件进行任何更改之后刷新Windows DNS缓存,如下所示:

使用Run as Administrator启动命令窗口并运行: –

 net stop Dnscache net start Dnscache 

现在您必须创建一个虚拟主机定义,所以编辑\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhost.conf文件(apache版本可能不同)

在第一次删除那里的默认东西。 然后像这样创建你的虚拟主机定义:

 # # Use name-based virtual hosting. # This next line is not required if you are using Apache 2.4.x and should be deleted NameVirtualHost *:80 ## should be first so the wamp menu page loads and is the default site ## should also never be changed from only allowing access from the local machine ## for a bit of extra security from casual ip address probing <VirtualHost *:80> DocumentRoot "C:/wamp/www" serverName localhost serverAlias localhost <Directory "C:/wamp/www"> AllowOverride All <IfDefine APACHE24> Require local </IfDefine> <IfDefine !APACHE24> Order Deny,Allow Deny from all Allow from 127.0.0.1 localhost ::1 </IfDefine> </Directory> </VirtualHost> <VirtualHost *:80> DocumentRoot "C:/wamp/www/project1" serverName project1 serverAlias project1 <Directory "C:/wamp/www/project1"> AllowOverride All <IfDefine APACHE24> Require local </IfDefine> <IfDefine !APACHE24> Order Deny,Allow Deny from all Allow from 127.0.0.1 localhost ::1 </IfDefine> </Directory> </VirtualHost> 

现在您需要再做一次更改,您必须取消httpd.conf中包含刚刚更改的上述文件的行。 因此,编辑httpd.conf文件,使用wampmanager菜单来执行此操作,因为它可以确保您编辑正确的文件。

找到这一行#Include conf/extra/httpd-vhosts.conf并从行开头删除注释#符号,如下所示: –

 Include conf/extra/httpd-vhosts.conf 

现在,您当然需要重新启动Apache,以便它能够完成您的配置更改。

如果Apache没有重启,你可能在配置中犯了一个错误,找出哪里出了什么问题。

打开一个命令窗口和CD\wamp\bin\apache\apache2.4.9\bin文件夹中。

然后运行这个:

 httpd -t 

如果错误是在httpd.confhttpd-vhost.conf文件中,它会告诉你错误,并给你的行号,使错误很容易找到。

在你的www文件夹中打开index.php,在第30行改变:$ suppress_localhost为false

这是应该看看:

$ suppress_localhost = false ;

在你的www文件夹中,打开第30行的index.php 。在这里,将$suppress_localhost更改$suppress_localhost false 。 所以,应该看看:

 $suppress_localhost = false; 

这对我来说是最快最简单的修复。 我正在使用64位Wamp。

你的wamp似乎被配置为在通常不存在的域名helloworld上运行一个网站。

加:

  127.0.0.1 helloworld 

在这个文件里面: c:\windows\system32\drivers\etc\hosts

确保使用管理员权限启动文本编辑器才能编辑该文件。

这将告诉你的电脑,否则不存在的域名helloworld应该被解析到你的环回地址。

好的,我有这个问题。 所以,我解决了这个问题,并将其追溯到一个实际的解决方案,而不是一个HACK。

解决方案

  1. 右键单击WAMP服务器图标
  2. 选择WAMP Settings
  3. 选择(启用)选项Add localhost in URL

完成 。 剩下的是如何以及为什么的FYI。


注意 :localhost / myproject.php或myproject.php。 虽然解决方案已经被接受,但是我看到一些让我感到困惑的帖子。 所接受的解决方案基于单个项目,基于OP的具体问题,以及如何影响该单个项目,不同的服务器应用程序。 但所有其他解决方案都是黑客,并没有真正回答OP的问题的解决方案,但确实提出了有关URL的好处。 所以,根据其他“解决方案”,这里是如何切换URL中的本地主机引用。 因此,我的附加解决方案添加到组合中。


 这是一个切换开关。 

疑难解答过程(不涉及黑客行为):


我们来看看index.php

在这里输入图像说明


我们来看看配置文件。 注意变量和数组?

在这里输入图像说明


这是数组。 之前使用的变量。 我们来看看…哦,它告诉我们在哪里以及要做什么。

在这里输入图像说明


解决方案中所述:

在这里输入图像说明

对我来说,最简单的方法是http:// localhost ,在wampserver主页中使用Add a Virtual Host (工具部分)。 有没有任何问题创建别名的好和简单的形式(而不是使用托盘图标来创建别名控制台)。 没有来源编辑,只使用什么wamp提供。 记住在创建别名后刷新DNS。 测试Win10,Wampserver 3.0.6 64位。

像RiggsFolly说的创建一个虚拟主机。

并尝试取消注释httpd.conf Loadmodulee rewrite_module modules/mod_rewrite.so

如果你的“你的项目”文件夹存在于“wamp / www /”中,并且在正确启动wampserever之后可以看到localhost主页,并且仍然无法访问你的项目,那么只需转到www文件夹,打开index.php并搜索$ suppress_localhost并将其值设置为false 。 重新启动wampserver,进入本地主机并尝试访问您的项目。

Httpd.conf中的HostnameLookups ON没有关闭,DocumentRoot被改变了。 在$ _SERVER ['HTTP_HOST'] $ _SERVER ['SERVER_NAME'] $ _SERVER ['DOCUMENT_ROOT']

 C:\wamp\www In index.php line 338 ($suppress_localhost ? 'http://' : '') change http:// to http://localhost/ 

为此,您可以使用在localhost主页上的“ 工具”菜单下的“ Add a virtual Host实用程序来创建虚拟主机
有关如何创建虚拟主机的更多信息,请访问: 逐步说明

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

$ suppress_localhost = True; ===> $ suppress_localhost = false;

那是工作。

您可以将“wamp64 / wampmanager.conf”文件中的“urlAddLocalhost”变量更新为开/关。 默认情况下是“关闭”。
我的版本是3.0.6。

 urlAddLocalhost = "off" 

在这里输入图像说明

在Windows 7,64bit上安装新的wamp设置后,我也面临同样的问题。 只要换行号 30 $ suppress_localhost = false; 它为我工作。