WAMP无法在本地网络上访问 403禁止访问。

59
  • 我知道这个问题已经被问了很多次。
  • 我遵循了网络上的大部分答案,但是我仍然收到相同的消息:
  • 403 禁止访问

    您没有权限访问此服务器上的 /。

  • 很奇怪的是,当我使用相同的 PC 访问 localhost:1234 时,它可以正常运行,但如果我使用我的 IP 地址 192.168.0.188:1234 访问,则会出现问题。
  • 还有一件非常奇怪的事情是,我尝试在其他 PC 上安装 WAMP,并且在任何配置都没有的情况下,我都可以访问该 PC。
  • 因此,我认为这是因为 McAfee 和防火墙,因此我在 Windows 上开放了端口和 McAfee,但没有改变,我关闭了防火墙,但仍然没有变化。
  • 然后,出于无缘无故的原因,我通过路由器“端口转发”打开了端口,但仍然没有变化。
  • 我不认为这是因为我的 WAMP 配置,因为我仍然能够收到这个 403 禁止访问 消息,而且使用其他 PC 无需任何配置就可以访问它。
  • 这两台电脑都设置如下:
  • Windows 8 Pro
    • WAMP Wampserver: 2.4
    • Apache Version: 2.4.4
    • PHP Version: 5.4.12
    • MySQL Version: 5.6.12
  • 可访问的 PC 使用 Microsoft Security Essentials
  • 不可访问的 PC 使用 McAfee Internet Security
  • 我试图关闭 WAMP 并启动 Microsoft Server 的 IIS(从任何 PC 都可以正常工作),但是 WAMP 仍然不起作用。
  • 我遵循了这些教程:

  • 你的浏览器有代理设置吗? - briankip
    5个回答

    143

    如果您使用的是WAMPServer 3,请参见答案底部

    对于WAMPServer版本 <= 2.5

    默认情况下,Wampserver的配置尽可能安全,因此Apache设置为仅允许来自运行wamp的计算机的访问。毕竟它应该是一个开发服务器,而不是一个实时服务器。

    此外,WAMPServer 2.4中发布了一个小错误,其中它使用了旧的Apache 2.2语法,而不是新的Apache 2.4语法进行访问权限控制。

    您需要更改Apache的安全设置以允许来自其他任何地方的访问,因此请编辑您的httpd.conf文件。

    将此部分从:

    #   onlineoffline tag - don't remove
         Order Deny,Allow
         Deny from all
         Allow from 127.0.0.1
         Allow from ::1
         Allow from localhost
    

    至:

    #   onlineoffline tag - don't remove
        Require local
        Require ip 192.168.0
    

    Require local 允许从这些 IP 地址 127.0.0.1 & localhost & ::1 访问。

    语句 Require ip 192.168.0 允许您从内部网络上的任何 IP 访问 Apache 服务器。同时,它还将允许使用服务器机器的实际 IP 地址从服务器机器进行访问,就像您正在尝试的那样。

    WAMPServer 3 有一种不同的方法

    在 WAMPServer 版本 3 及以上版本中,localhost 预定义了虚拟主机,因此您必须在虚拟主机定义配置文件中进行访问权限修改。

    首先不要对 httpd.conf 文件进行任何修改,保持其原样。

    使用菜单编辑 httpd-vhosts.conf 文件。

    enter image description here

    它应该长这样:

    <VirtualHost *:80>
        ServerName localhost
        DocumentRoot D:/wamp/www
        <Directory  "D:/wamp/www/">
            Options +Indexes +FollowSymLinks +MultiViews
            AllowOverride All
            Require local
        </Directory>
    </VirtualHost>
    

    修改为

    <VirtualHost *:80>
        ServerName localhost
        DocumentRoot D:/wamp/www
        <Directory  "D:/wamp/www/">
            Options +Indexes +FollowSymLinks +MultiViews
            AllowOverride All
            Require all granted
        </Directory>
    </VirtualHost>
    

    希望您已经为项目创建了虚拟主机,而不是使用 wamp\www 文件夹作为您的站点。在这种情况下,请保留localhost的定义,仅对虚拟主机进行更改。 更改后不要忘记重新启动Apache

    这很有帮助。只需注意,根据Apache的说法,旧的访问控制方法仍将被使用:“旧的访问控制惯用语应该被新的身份验证机制所取代,尽管为了与旧配置兼容,提供了新模块mod_access_compat。” - Giacomo1968
    @RiggsFolly 但是我无法通过我的手机在地址为127.0.0.1的无线网络上访问该网站。我做错了什么吗? - ey dee ey em
    @Chen,你运行Apache服务器的电脑的IP地址是多少? - RiggsFolly
    如果你的WAMP菜单中没有httpd-vhosts.conf选项,你仍然可以在以下位置找到它:“C:\wamp64\bin\apache\apache2.4.17\conf\extra\httpd-vhosts.conf”。 - I Want Answers
    @IWantAnswers 如果是这种情况,升级到最新的WAMPServer V3.1.1或者任何最新版本。这是一个就地升级,仅更新WAMPServer代码,而不更新任何AMP组件或网站代码。 - RiggsFolly

    31

    适用于 Apache 2.4.9

    此外,查看 C:\wamp\bin\apache\apache2.4.9\conf\extra 中的 httpd-vhosts.conf 文件。

    <VirtualHost *:80>
    ServerName localhost
    ServerAlias localhost
    DocumentRoot C:/wamp/www
    <Directory "C:/wamp/www/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Require local
    </Directory>
    </VirtualHost>
    

    更改为:

    <VirtualHost *:80>
    ServerName localhost
    ServerAlias localhost
    DocumentRoot C:/wamp/www
    <Directory "C:/wamp/www/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Require all granted
    </Directory>
    </VirtualHost>
    

    将"Require local"更改为"Require all granted"解决了我的本地网络中的403错误。


    这对我解决了问题,在尝试其他所有方法之后。在我看来,这应该由WampManager的“上线”按钮自动完成。 - mavrosxristoforos
    1
    @mavrosxristoforos,“上线”功能现已被弃用,因此默认情况下不在菜单中显示。 - RiggsFolly

    18

    我从这里得到了答案。对我有用。

    Require local
    

    变成

    Require all granted
    Order Deny,Allow
    Allow from all
    

    除了 Require all granted 是 Apache 2.4 语法,而 Order Deny,Allow Allow from all 是 Apache 2.2 语法。只要您加载了 compat 模块,就可以使用任何一种语法。但是,同时使用 两种 语法只会让 Apache 混淆不清。 - RiggsFolly
    但现在我只能看到本地主机页面。当我跳转到phpmyadmin或我的项目目录时,它会将URL更改为localhost。它显示网站无法访问。有什么建议吗? - Ahmad Sayeed

    9

    为了进一步解释RiggsFolly的回答,或者对于使用Apache 2.2或以下版本的用户,可以采用以下格式:

    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1 ::1
    Allow from localhost
    Allow from 192.168
    Allow from 10
    Satisfy Any
    

    更多有关Apache 2.4格式变更的详细信息,请参考官方从2.2升级到2.4页面,该页面非常清晰简明。关键点如下:
    旧的访问控制方法应该被新的身份验证机制所取代,但为了兼容旧配置,提供了新模块mod_access_compat
    这意味着全球的系统管理员不必立即惊慌地将Apache 2.2配置更改为2.4兼容。

    @JakeGould,谢谢你,我为寻找这个答案而烧坏了我的脑细胞。 :) - Stanojkovic
    谢谢,这是我用于WampServer 2.2的工作配置。 - sianipard

    3

    对于那些可能在Windows 10(64位)上运行Apache 2.4.35和WAMP 3.1.4的用户

    如果您在使用外部设备连接到本地主机时遇到了问题,并且收到403 Forbidden错误,则可能是与您的httpd.confhttpd-vhosts.conf文件以及它们都具有的"Require local"行有关。

    [之前] httpd-vhosts.conf

    <VirtualHost *:80>
     ServerName localhost
     ServerAlias localhost
     DocumentRoot "${INSTALL_DIR}/www"
     <Directory "${INSTALL_DIR}/www/">
       Options +Indexes +Includes +FollowSymLinks +MultiViews
       AllowOverride All
       Require local     <--- This is the offending line.
     </Directory>
    </VirtualHost>
    

    [After] httpd-vhosts.conf

    <VirtualHost *:80>
     ServerName localhost
     ServerAlias localhost
     DocumentRoot "${INSTALL_DIR}/www"
     <Directory "${INSTALL_DIR}/www/">
       Options +Indexes +Includes +FollowSymLinks +MultiViews
       AllowOverride All
     </Directory>
    </VirtualHost>
    

    此外,您需要按照以下方式更新您的 httpd.conf 文件:

    [在] httpd.conf 之前

    DocumentRoot "${INSTALL_DIR}/www"
    <Directory "${INSTALL_DIR}/www/">
    #   onlineoffline tag - don't remove
    
        Require local  #<--- This is the offending line.
    </Directory>
    

    [之后] httpd.conf

    DocumentRoot "${INSTALL_DIR}/www"
    <Directory "${INSTALL_DIR}/www/">
    #   onlineoffline tag - don't remove
    
    #   Require local
    </Directory>
    

    请确保通过以下方式重新启动您的WAMP服务器(位于屏幕右下角的系统托盘-->单击WAMP图标-->“重新启动所有服务”)。
    然后刷新本地主机上的浏览器,以确保您仍然具有正确的连接性,然后刷新您之前尝试连接的其他外部设备。
    免责声明:如果您在公司环境中,请注意您的本地开发环境的访问协议,再实施任何全面的更改。

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接