繁体   English   中英

WAMP - 从项目 URL 中删除 localhost

[英]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.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。

好的,我遇到了这个问题。 因此,我解决了问题并将其追溯到实际解决方案,而不是 HACK。

解决方案

  1. 右键单击 WAMP 服务器图标
  2. 选择WAMP Settings
  3. 选择(启用)选项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;

那就是工作。

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

urlAddLocalhost = "off" 

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM