你没有权限访问此服务器上的 [自定义别名]。

10

有人能帮忙解决以下问题吗: 我使用wamp在chrome浏览器中运行项目。 在添加一个指向我的项目目录c:/dev/myProject的新别名后, 我收到了Forbidden消息:您没有权限访问此服务器上的/newAlias。 我可以访问默认别名,如phpmyadmin,webgrind... 但我无法访问自己的别名。 我使用位于c:/wamp的Win 8.1 64位上的WampServer版本2.5 64位。 我尝试了从网络上找到的基本方法,但没有成功。 有什么建议吗?

编辑:newAlias的内容:

Alias /bs1/ "c:/_DEV_/git/NewProject/www/" 

<Directory "c:/_DEV_/git/NewProject/www/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
        Order allow,deny
    Allow from all
</Directory>

请显示\wamp\alias\newalias.conf的内容。请编辑问题,不要在评论中放置它。 - RiggsFolly
6个回答

15

不要更改httpd.conf文件的那一部分。这几行代码控制着 Apache 安装在哪个磁盘根目录下的访问权限。因此,你刚刚允许了任何人通过简单的黑客技巧获得完全访问权限。

通过 Apache 来确保访问安全的过程是禁止从根目录及其以下所有内容的所有访问,然后有选择地为特定站点允许访问驱动器的特定区域/文件夹。

更好的解决方案是将httpd.conf恢复原样并在你的别名定义中进行更改。像这样:-

Alias /bs1 "c:/_DEV_/git/NewProject/www/" 

<Directory "c:/_DEV_/git/NewProject/www/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Require local         <-- to develop on this PC
    Require ip 192.168.1  <-- to access the server from another PC on your network
    Require all granted   <-- to allow the world to see the beauty of your site
</Directory>

使用虚拟主机来控制每个站点而不是别名实际上是更好的想法。

以下是原因和操作方法:- WAMPServer 2.5 主页、您的项目菜单以及虚拟主机的必要性


12

我已将WAMP从2.2.22更新到2.4.9,发现新的别名无法使用(与您遇到的错误消息相同)。

检查默认别名(如phpmyadmin),我发现了这个:

Alias /phpmyadmin "c:/wamp/apps/phpmyadmin4.1.14/"

# to give access to phpmyadmin from outside 
# replace the lines
#
# Require local
#
# by
#
# Require all granted
#

<Directory "c:/wamp/apps/phpmyadmin4.1.14/">
   Options Indexes FollowSymLinks MultiViews
   AllowOverride all
  <IfDefine APACHE24>
    Require local
  </IfDefine>
  <IfDefine !APACHE24>
    Order Deny,Allow
      Deny from all
      Allow from localhost ::1 127.0.0.1
    </IfDefine>
  php_admin_value upload_max_filesize 128M
  php_admin_value post_max_size 128M
  php_admin_value max_execution_time 360
  php_admin_value max_input_time 360
</Directory>

如果您查看文件的内容,您会注意到<IfDefine APACHE24><IfDefine !APACHE24>条件语句。因此,我已将我的别名.conf文件从以下内容进行了更改:

Alias /svn "c:/work/website-svn/" 

<Directory "c:/work/website-svn/">
    Options Indexes FollowSymLinks MultiViews

    AllowOverride all
    Order allow,deny
    Allow from all

</Directory>

收件人:

Alias /svn "c:/work/website-svn/" 

<Directory "c:/work/website-svn/">
    Options Indexes FollowSymLinks MultiViews

    Require local

</Directory>

那解决了我的问题,希望它也能解决你的问题。


3
这个答案应该被接受。WAMP 2.5自带Apache 2.4,它使用Require来进行访问控制。而Apache 2.2则使用Order, Deny, Allow, Satisfy指令。有关从Apache 2.2升级到2.4的详细信息,请参见此处:http://httpd.apache.org/docs/2.4/upgrading.html。 - Jack
WAMP不应该在添加别名时考虑到这种更改吗?默认情况下,它使用旧语法。 - konrad

1
我不是专家,但上面的答案似乎会授予访问整个计算机的权限...所以我尝试修改上面的答案,只授予访问我的别名文件夹的权限...
所以,改为...转到httpd.conf文件...并搜索...
<Directory />
   AllowOverride none
   Require all denied
</Directory>

在此之下添加以下内容。
<Directory "c:/path-to-your-alias-folder...">
   AllowOverride none
   Require all granted
</Directory>

这对我有用,我认为它可能会更安全一些...再次声明,我不是专家...只是试图让它工作...


1

如果您想让您的服务器和wamp允许权限,需要3个步骤。请确保这3件事情,之后您可以使用IP地址(例如http://192.168.1.1/yoursitefoldername)从其他网络访问您的站点。 (192.168.1.1是您的计算机或VPS IP地址,“yoursitefoldername”是您的站点文件夹名称,应位于wamp->www文件夹中)

1.

首先,需要允许TCP和UDP数据包的端口80和443。为此,请在Windows防火墙上为端口80和443创建2个入站规则的TCP和UDP。 (或者您可以为测试而禁用整个防火墙,但永久解决方案是允许入站规则)

2.

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

对于WAMPServer版本<=2.5

您需要更改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
    Order Allow,Deny
      Allow from all

如果“允许所有”行对您不起作用,请使用“Require all granted”,这样它将对您起作用。
WAMPServer 3有一种不同的方法
在WAMPServer的版本3和之后,有一个虚拟主机预定义为localhost,因此不要修改httpd.conf文件,保持原样即可。
使用菜单编辑httpd-vhosts.conf文件。

enter image description here

It should look like this :

<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 定义,只对您的虚拟主机进行更改。
3. 不要忘记在更改后重新启动 Wamp 或 Apache 的所有服务。

0
我建议您考虑设置虚拟主机。虽然需要多花几分钟,但更加稳定可靠。RiggsFolly在类似问题的回答中详细、严谨、实用,值得借鉴: Wamp服务器上的项目链接无法工作

0
我找到了一个对我有效的解决方案。 在httpd.conf中,我进行了更改:
<Directory />
    AllowOverride none
    Require all denied
</Directory>

<Directory />
    AllowOverride none
    Require all granted
</Directory>

这解决了问题并允许我访问我的自定义别名。


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