WAMP - 从项目URL中删除localhost

时间:2014-05-08 20:21:28

标签: php apache url localhost wamp

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

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

16 个答案:

答案 0 :(得分:33)

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

实际上,这个改变是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样式网址意味着这些变量将返回

$_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文件中,它会告诉您错误,并且还会为您提供行号以便轻松找到错误。

答案 1 :(得分:13)

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

应该看:

$ suppress_localhost = false ;

答案 2 :(得分:12)

www文件夹中,在第30行打开index.php。在此处,将$suppress_localhost更改为false。所以,它应该看起来:

$suppress_localhost = false;

这对我来说是最快捷,最容易解决的问题。我正在使用64位Wamp。

答案 3 :(得分:3)

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

添加:

 127.0.0.1    helloworld

在此文件中:c:\windows\system32\drivers\etc\hosts

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

这会告诉您的计算机应该将其他不存在的域helloworld解析为您的回送地址。

答案 4 :(得分:3)

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

解决方案

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

  4. 完成即可。其余部分是如何以及为何的原因。

    注意:localhost / myproject.php或myproject.php。虽然解决方案已被接受,但我看到一些让我感到困惑的帖子。根据OP的具体问题,以及如何影响该单个项目,可接受的解决方案基于不同服务器应用程序的单个项目。但是所有其他解决方案都是黑客攻击,并没有真正回答OP问题的解决方案,但确实提出了关于URL的一个好点。因此,根据其他&#34;解决方案&#34;,以下是如何在URL中切换localhost引用。因此,我的附加解决方案增加了混合。

    This is a toggle switch.

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

    左看index.php

    enter image description here

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

    enter image description here

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

    enter image description here

    SOLUTION 中所述:

    enter image description here

答案 5 :(得分:1)

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

答案 6 :(得分:0)

创建像RiggsFolly这样的虚拟主机。

并尝试在LoadModule rewrite_module modules/mod_rewrite.so

中取消注释httpd.conf

答案 7 :(得分:0)

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

答案 8 :(得分:0)

在更改或未更改DocumentRoot的httpd.conf中,HostnameLookups ON而非OFF。 在浏览器中测试     $ _ SERVER [ 'HTTP_HOST']     $ _ SERVER [ 'SERVER_NAME']     $ _SERVER ['DOCUMENT_ROOT']

答案 9 :(得分:0)

C:\wamp\www

In index.php 
line 338 

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


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

答案 10 :(得分:0)

为此,您可以使用localhost主页上工具菜单下的 Add a virtual Host 工具创建虚拟主机
有关如何创建虚拟主机的详细信息,请访问:Step by step instructions

答案 11 :(得分:0)

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

  

在您的www文件夹中打开index.php >>>更改:$ suppress_localhost至   为假/否。

答案 12 :(得分:0)

这本身并不是一个真正的答案。似乎,使用WAMP删除虚拟主机的最快方法不是首先创建一个虚拟主机,或者是准备卸载/重新安装它。用于更正错误且否则不会使WAMP Server发生故障的配置文件的路径是什么?

答案 13 :(得分:-1)

在窗口7,64位上安装新的wamp设置后,我也遇到了同样的问题。 只是改变行号。三十 $ suppress_localhost = false; 它的工作对我来说。

答案 14 :(得分:-1)

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

$ suppress_localhost = True; ===&gt; $ suppress_localhost = false;

这是工作。

答案 15 :(得分:-1)

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

urlAddLocalhost = "off" 

enter image description here