[英]WAMP - Remove localhost from project URL
我在 WAMP 中的项目的 URL 没有像我期望的那样解析。 例如,我希望文件夹 c:\\wamp\\www\\project1 中的项目具有 URL http://project1/ ,但它实际上具有 URL http://localhost/project1/ 。
这会在访问服务器变量时导致问题。 我该如何解决?
如果您现在使用WAMPServer 3或更高版本,您还可以专门查看此答案,以通过简单的 clikc 和 go 方式创建虚拟主机。
实际上,此更改是 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。
好的,我遇到了这个问题。 因此,我解决了问题并将其追溯到实际解决方案,而不是 HACK。
解决方案:
WAMP Settings
,Add localhost in URL
完成。 其余的是关于如何以及为什么的仅供参考。
注意:localhost/myproject.php 或 myproject.php。 虽然解决方案已经被接受,但我看到了一些让我感到困惑的帖子。 接受的解决方案基于与不同服务器应用程序的单个项目,基于 OP 的特定问题,以及如何影响有问题的单个项目。 但是所有其他解决方案都是黑客,并没有真正回答 OP 问题的解决方案,但确实提出了有关 URL 的好观点。 因此,根据其他“解决方案”,这里是如何切换 URL 中的 localhost 引用。 因此,我的额外解决方案添加到了混合物中。
This is a toggle switch.
故障排除过程(不涉及黑客攻击):
让我们看看index.php
我们来看看配置文件。 注意变量和数组?
这是数组。 之前使用的变量。 让我们看看... 哦,它告诉我们在哪里做什么,做什么。
如解决方案中所述:
您的 wamp 似乎已配置为在通常不存在的域 helloworld 上运行网站。
添加:
127.0.0.1 helloworld
在此文件中: c:\\windows\\system32\\drivers\\etc\\hosts
确保以管理员权限启动文本编辑器,以便能够编辑该文件。
这将告诉您的计算机,否则不存在的域helloworld
应该解析为您的回送地址。
对我来说,最简单的方法是访问http://localhost并在 wampserver 主页中使用Add a Virtual Host
(工具部分)。 有一个很好且简单的形式来创建别名,没有任何问题(当您使用托盘图标创建别名时,而不是控制台)。 没有源代码编辑,只需使用 wamp 提供的内容。 创建别名后记得刷新DNS。 在 Win10、WampServer 3.0.6 64 位上测试。
创建一个像 RiggsFolly 所说的虚拟主机。
并尝试在httpd.conf
取消注释LoadModule rewrite_module modules/mod_rewrite.so
如果您的“您的项目”文件夹存在于“wamp/www/”中,并且在正确启动wampserever后您可以看到localhost主页,但仍然无法访问您的项目,那么只需转到“wamp/www/”文件夹即可,打开index.php并搜索$suppress_localhost并将其值设置为false 。 重新启动 wampserver,转到 localhost 并尝试访问您的项目。
httpd.conf 中的 HostnameLookups ON 未 OFF,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 为 false / no。
这本身并不是一个真正的答案。 似乎使用 WAMP 删除虚拟主机的最快方法不是一开始就创建一个,或者准备卸载/重新安装它。 配置文件的路径是什么来纠正错误的 WAMP 服务器,否则不会出现故障?
在 64 位窗口 7 上安装新的 wamp 设置后,我也遇到了同样的问题。 只需更改行号。 30 $suppress_localhost = false; 它为我工作。
在 www 文件夹中打开 index.php 并设置
$suppress_localhost = True;===>$suppress_localhost = false;
那就是工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.