我在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.conf
或httpd-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。
解决方案 :
WAMP Settings
, 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; 它为我工作。