WAMP - 从项目 URL 中删除 localhost

Posted

技术标签:

【中文标题】WAMP - 从项目 URL 中删除 localhost【英文标题】:WAMP - Remove localhost from project URL 【发布时间】:2014-06-26 10:26:39 【问题描述】:

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

这可能会导致访问服务器变量时出现问题。我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

您的 wamp 似乎已配置为在通常不存在的域 helloworld 上运行网站。

添加:

 127.0.0.1    helloworld

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

确保您以管理员权限启动文本编辑器,以便能够编辑该文件。

这将告诉您的计算机应该将原本不存在的域 helloworld 解析为您的环回地址。

【讨论】:

执行此操作时是否需要重新启动 Windows? (我不确定) @Dagon 不,通常你甚至不需要重新启动浏览器 如果我这样做,其他项目将继续中断 @RafaeldeCastro 请注意,在您的主机文件中,您需要 127.0.0.1 hello world ,即使其中有 127.0.0.1 localhost @nl-x 但是如果我有像 MyNewSite 这样的其他项目...我将不得不再次编辑 Host 文件...对于任何其他项目等等等等??【参考方案2】:

如果您现在使用 WAMPServer 3 或更高版本,您也可以look at this answer 进行简单的点击并创建虚拟主机。

实际上,此更改是 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 文件中,它会告诉您错误并为您提供行号,以便轻松查找错误。

【讨论】:

至少现在,我知道为什么了。如果开发人员这样做,我不会改变它。感谢您的帮助和信息。 Rafael de Castro - 巴西 谢谢,但它在 Apache 2.4.23 上对我不起作用,wamp 显示两个虚拟主机(localhost 和 project1),它链接到“project1”但是它只是打开相同的 wamp 配置页面这是在本地主机上...更新:实际上它有效!我不得不再次重新启动 wamp 服务。非常感谢!【参考方案3】:

在您的 www 文件夹中打开 index.php 在第 30 行更改: $suppress_localhost 为假

这应该是这样的:

$suppress_localhost = false;

【讨论】:

更新:这里显示了一种新的方法:***.com/a/40846681/3125936【参考方案4】:

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

并尝试在httpd.conf 中取消注释LoadModule rewrite_module modules/mod_rewrite.so

【讨论】:

【参考方案5】:

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

$suppress_localhost = false;

这对我来说是最快和最简单的解决方法。我正在使用 64 位 Wamp。

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

在 httpd.conf 中 HostnameLookups ON 不是 OFF 并且 DocumentRoot 改变与否。 在浏览器中测试 $_SERVER['HTTP_HOST'] $_SERVER['SERVER_NAME'] $_SERVER['DOCUMENT_ROOT']

【讨论】:

【参考方案8】:

在 64 位窗口 7 上安装新的 wamp 设置后,我也遇到了同样的问题。 只需更改行号。 30 $suppress_localhost = 假; 它对我有用。

【讨论】:

尽管我安装了 wamp 32 位版本,但它在 windows 7 终极版 64 位上对我有用【参考方案9】:
C:\wamp\www

In index.php 
line 338 

($suppress_localhost ? 'http://' : '')


change http://   to http://localhost/

【讨论】:

请考虑添加一些解释!【参考方案10】:

为此,您可以使用本地主机主页上工具菜单下的Add a virtual Host实用程序创建一个虚拟主机。 有关如何创建虚拟主机的更多信息,请访问:Step by step instructions

【讨论】:

【参考方案11】:

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

解决方案

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

完成。其余部分仅供参考,说明如何以及为什么。


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


这是一个拨动开关。

故障排除过程(不涉及黑客攻击):


让我们看看 index.php


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


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


解决方案中所述:

【讨论】:

【参考方案12】:

对我来说,最简单的方法是转到 http://localhost 并在 wampserver 主页中使用 Add a Virtual Host(工具部分)。有一种很好且简单的形式可以毫无问题地创建别名(而不是使用托盘图标创建别名时的控制台)。没有源代码编辑,只使用 wamp 提供的东西。记住在创建别名后刷新 DNS。在 Win10、WampServer 3.0.6 64bit 上测试。

【讨论】:

【参考方案13】:

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

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

这是工作。

【讨论】:

【参考方案14】:

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

urlAddLocalhost = "off" 

【讨论】:

【参考方案15】:

我认为最简单快捷的方法是:

在您的 www 文件夹中打开 index.php >>> 将 $suppress_localhost 更改为 是假的/不。

【讨论】:

我很高兴让这篇文章更具可读性,你能告诉我你不明白的部分吗? 您必须在引号或代码块中插入操作的 rout,以便其他人可以阅读。随时! ;) 谢谢,我已经改了!【参考方案16】:

这本身并不是一个真正的答案。似乎使用 WAMP 删除虚拟主机的最快方法不是一开始就创建一个,或者准备卸载/重新安装它。配置文件的路径是什么,以纠正错误且不会出现故障的 WAMP 服务器?

【讨论】:

也许这应该是一个单独的问题?但是,如果您是 WAMP 控制面板,它可以选择打开各种配置(用于 PHP、Apache 等)。在 Windows 中,apache conf (httpd.conf) 将位于您安装 Apache 的文件夹中(所以可能是 Program Files/WAMP?)

以上是关于WAMP - 从项目 URL 中删除 localhost的主要内容,如果未能解决你的问题,请参考以下文章

如何在 WAMP 服务器 (v2.5) 中启用 https (localhost) url? [复制]

Wamp server 2.5 页面重定向错误

Laravel 5漂亮的URL不适用于wamp

如何将容器中的 symfony 5 DATABASE_URL(在 .env 中)连接到本地主机上的 wamp

WAMP 的远程访问重定向到重复的 url

WAMP 错误:禁止,您无权访问此服务器上的 /url/