设置新别名时,我获得Access Forbidden(错误403)

Gaz*_*ion 41 xampp

我正在运行Windows 7,最近安装了XAMPP来构建开发环境.我在服务器方面做得不好,所以我在为项目设置别名时遇到了一些问题.

到目前为止XAMPP正在运行,如果我去localhost,我会收到XAMPP欢迎页面.我在apache install的"conf"文件夹中创建了一个"别名"文件夹.在那里我添加了dev.conf,其中包含以下内容:

<Directory "C:\Users\my_user\My%20Documents\Aptana%20Studio%203%20Workspace\project">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from 127.0.0.1
</Directory>

Alias /dev "C:\Users\my_user\My%20Documents\Aptana%20Studio%203%20Workspace\project"
Run Code Online (Sandbox Code Playgroud)

但是当我去"localhost/dev"时,我得到:

访问被禁止!

您无权访问请求的对象.它受读保护或服务器无法读取.

如果您认为这是服务器错误,请与网站管理员联系.

错误403

我尝试谷歌搜索,我发现其他类似的问题,但我似乎无法搞清楚.有人说你必须告诉它有权限,但在我指定的conf文件中允许它来自127.0.0.1.也许这是因为我的路径中有空格(虽然一些谷歌搜索告诉我%20的工作).我曾设法创建一个到不同的文件夹并复制粘贴工作的文件夹并更改了别名和路径并且它已经破坏所以它告诉我它可能与其中任何一个有关.

我查看了我的日志文件夹,发现以下行:

[Tue Dec 13 14:59:20 2011] [错误] [client :: 1]客户端被服务器配置拒绝:C:/ Users/my_user/My%20Documents

我不确定它是否会因为错误消息只能达到一定的长度而被切断,但这绝对不是我在dev.conf文件中添加的路径,我希望这可以让一些人更清楚,因为我得到了非常沮丧,我不知道该怎么办.

Guy*_*uyC 78

我刚刚在Xampp的Windows安装上发现了与Aliases相同的问题.

要解决403错误:

<Directory "C:/Your/Directory/With/No/Trailing/Slash">
   Require all granted
</Directory>

Alias /dev "C:/Your/Directory/With/No/Trailing/Slash"
Run Code Online (Sandbox Code Playgroud)

这个默认的Xampp设置应该没问题.有些人遇到了根目录上的拒绝问题,因此将目录标记翻转为:

<Directory "C:/Your/Directory/With/No/Trailing/Slash">
   Allow from all
   Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)

对此有所帮助,但当前版本的Xampp(撰写本文时为v1.8.1)并不需要它.

至于操作端口80的问题,Xampp包含一个方便的Netstat按钮,可以发现使用您的端口的内容.解雇并解决冲突,我想它可能是IIS,但不能确定.

  • 感谢您和“要求所有授予”它的工作原理! (2认同)

Nic*_*eek 28

我在Apache2.4上使用XAMPP,我遇到了同样的问题.我想保留默认的xampp/htdocs文件夹,能够从locahost访问它并让虚拟主机指向我的开发区域......

C:\xampp\apache\conf\extra\http-vhosts.conf文件的全部内容如下......

# Virtual Hosts
#
# Required modules: mod_log_config

# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# <URL:http://httpd.apache.org/docs/2.4/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#

##NameVirtualHost *:80

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ##ServerName or ##ServerAlias in any <VirtualHost> block.
#
##<VirtualHost *:80>
    ##ServerAdmin webmaster@dummy-host.example.com
    ##DocumentRoot "C:/xampp/htdocs/dummy-host.example.com"
    ##ServerName dummy-host.example.com
    ##ServerAlias www.dummy-host.example.com
    ##ErrorLog "logs/dummy-host.example.com-error.log"
    ##CustomLog "logs/dummy-host.example.com-access.log" common
##</VirtualHost>

##<VirtualHost *:80>
    ##ServerAdmin webmaster@dummy-host2.example.com
    ##DocumentRoot "C:/xampp/htdocs/dummy-host2.example.com"
    ##ServerName dummy-host2.example.com
    ##ErrorLog "logs/dummy-host2.example.com-error.log"
    ##CustomLog "logs/dummy-host2.example.com-access.log" common
##</VirtualHost>


<VirtualHost *:80>
    DocumentRoot "C:\xampp\htdocs"
    ServerName localhost
</VirtualHost>


<VirtualHost *:80>
    DocumentRoot "C:\nick\static"
    ServerName dev.middleweek.co.uk
    <Directory "C:\nick\static">
        Allow from all
        Require all granted
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

然后我C:\windows\System32\drivers\etc\hosts像这样更新了我的文件......

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost

127.0.0.1   dev.middleweek.co.uk
127.0.0.1       localhost
Run Code Online (Sandbox Code Playgroud)

重新启动计算机,打开XAMPP控制面板并启动Apache.

现在在您的浏览器中打开您的自定义域,在上面的示例中,它将是http://dev.middleweek.co.uk

希望有人帮助!

如果您希望能够在新的虚拟主机下查看目录列表,那么编辑您的VirtualHost块C:\xampp\apache\conf\extra\http-vhosts.conf以包含"选项索引",如下所示...

<VirtualHost *:80>
    DocumentRoot "C:\nick\static"
    ServerName dev.middleweek.co.uk
    <Directory "C:\nick\static">
        Allow from all
        Require all granted
        Options Indexes
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

干杯,尼克

  • +1我只是在添加"需要所有授予"行后才设法克服"禁止访问"错误.关于这一点的更多内容写在"什么是Apache的"需要所有授予的"真的吗?"http://serverfault.com/a/549559 (2认同)

Wil*_*lla 21

这个问题已经过时了,虽然你设法让它发挥作用但我觉得如果我明确你在这里提出的一些观点会有所帮助.

首先是关于有空格的目录名.我一直在玩apache2配置文件,我发现,如果目录名称有空格,则用双引号将其括起来,所有问题都会消失.例如...

    NameVirtualHost     local.webapp.org
    <VirtualHost local.webapp.org:80>
        ServerAdmin admin@example.com
        DocumentRoot "E:/Project/my php webapp"
        ServerName local.webapp.org
    </VirtualHost>
Run Code Online (Sandbox Code Playgroud)

请注意DocumentRoot行的编写方式.

第二个是关于禁止来自xampp的访问.我发现默认的xampp配置(..path到xampp/apache/httpd.conf)有一个如下所示的部分.

    <Directory>
        AllowOverride none
        Require all denied
    </Directory>
Run Code Online (Sandbox Code Playgroud)

改变它,使它看起来像下面.从xampp保存文件restart apache并解决问题.

    <Directory>
       Options Indexes FollowSymLinks Includes ExecCGI
       AllowOverride none
       Require all granted
    </Directory>
Run Code Online (Sandbox Code Playgroud)


小智 13

试试这个

sudo chmod -R 0777/opt/lampp/htdocs/testproject

  • 这是一个Windows环境. (7认同)
  • 这为什么要起票?这是解决问题的一种可怕方法,因为您刚刚创建了安全漏洞. (6认同)
  • 这个答案对我有所帮助,尽管它对请求者没有帮助 (3认同)

Gaz*_*ion 6

我终于开始工作了.

我不确定路径中的空间是否破坏了东西但是我将Aptana安装的工作空间改为没有空格的东西.

然后我卸载了XAMPP并重新安装它,因为我在想,也许我在某个地方没有注意到就弄错了,并认为我应该从头开始工作.

事实证明,Windows 7在某处使用端口80的服务阻止了apache启动(给它-1)错误.所以我改变了它侦听端口8080的端口,没有更多的冲突.

最后我重新启动了我的电脑,由于某种原因,XAMPP不喜欢我搞乱ini文件而只是重新启动apache并没有做到这一点.

无论如何,这是有史以来最令人沮丧的一天,所以我真的希望我的答案最终会帮助别人!

  • 我会把钱花在Skype的"其他服务"上.如果您打开Skype并转到"工具">"选项">"高级">"连接",然后查找"使用端口80和443作为传入连接的替代"的复选框.确保未经检查.重新启动Skype,然后您应该能够再次在端口80上运行Apache. (10认同)