禁止您无权访问此服务器上的/


68

我今天要做的就是将重定向规则写入子文件夹,例如:输入URL:example.com,然后将您重定向到example.com/subfolder

这样简单的愿望。我试图在互联网上找到解决方案。互联网告诉我要在htdocs根目录中添加一个.htaccess文件,其内容如下:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteRule ^$ subfolder [L]

我做到了 但是显然没有成功,他们没有告诉我我必须取消注释httpd.conf中的模块:

LoadModule rewrite_module modules/mod_rewrite.so

所以我也这样做了。再没有成功。他们没有告诉我我必须更改httpd.conf以便启用.htaccess文件:

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

DocumentRoot "c:/Apache24/htdocs"
<Directory "c:/Apache24/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

再次没有成功,因为输入URL时出现此错误:

禁止您无权访问此服务器上的/。

现在我陷入困境,无法在互联网上找到更多解决方案。出于私人原因,我仅在Windows 7计算机上运行Apache 2.4。



在哪里可以找到apache2.4上的httpd.conf?
黑色

Answers:


169

通过使用.htaccess和mod_rewrite的错误发现了我的解决方案
对于Apache 2.4以及在所有* .conf文件(例如httpd-vhosts.conf,http.conf,httpd-autoindex.conf ..etc)中使用

Require all granted

代替

Order allow,deny
Allow from all

订单允许指令被弃用的Apache 2.4


神圣的地狱,刚从centos迁移过来,我很高兴看到这一点。谢谢!
robm 2014年

22
该死的弃用!-Apache错误消息会很好
Andrew Atkinson 2014年

谢谢!这拯救了我的一天!
sibley 2014年

3
是的,完全同意@AndrewAtkinson。apache2年,现在,相同版本,不同配置。
2014年

2
很抱歉问一下,但是我们应该把那行放在哪里?
nyxee

13

工作方法{如果除了配置没有其他问题}

默认情况下,Appache不会限制来自ipv4的访问。(常见的外部IP)

可能会限制“ httpd.conf”(或“ apache2.conf”)中的配置,具体取决于您的apache配置)

解:

全部替换:

<Directory />
     AllowOverride none
    Require all denied

</Directory>

<Directory />
     AllowOverride none
#    Require all denied

</Directory>

因此消除了对Apache的所有限制

更换Require localRequire all grantedC:/wamp/www/目录

<Directory "c:/wamp/www/">
    Options Indexes FollowSymLinks
    AllowOverride all
    Require all granted
#   Require local
</Directory>

3

解决方法很简单。

如果您尝试使用本地IP地址访问服务器,但出现类似以下错误消息 禁止访问”,则您无权访问此服务器上的/

只需从(在我的情况下C:/wamp/bin/apache/apache2.2.21/conf/httpd.conf)打开httpd.conf文件

搜索

<Directory "D:/wamp/www/"> .... ..... </Directory>

从127.0.0.1替换 允许

全部允许

保存更改并重新启动服务器。

现在,您可以使用IP地址访问服务器


2

问题出在https.conf文件中!

# Virtual hosts
# Include conf/extra/httpd-vhosts.conf

当hash(#)被删除或弄乱时,将发生错误。这两行应显示为如上所示。


4
请格式化您的答案。
乔纳森·尤斯塔斯

乱搞什么?
飞机

1

在Apache / 2.2.15(Unix)上找到了我的解决方案。

感谢@QuantumHive的回答:

第一:我找到了所有

Order allow,deny
Deny from all

代替

Order allow,deny

Allow from all

接着:

我定了

#
# Control access to UserDir directories.  The following is an example
# for a site where these directories are restricted to read-only.
#
#<Directory /var/www/html>
#    AllowOverride FileInfo AuthConfig Limit
#    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
#    <Limit GET POST OPTIONS>
#        Order allow,deny
#        Allow from all
#    </Limit>
#    <LimitExcept GET POST OPTIONS>
#        Order deny,allow
#        Deny from all
#    </LimitExcept>
#</Directory>

删除之前的“#”注释

#
# Control access to UserDir directories.  The following is an example
# for a site where these directories are restricted to read-only.
#
<Directory /var/www/html>
    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    <Limit GET POST OPTIONS>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>

ps。我的WebDir是:/ var / www / html


0

这对我在Mac OS Mojave上有效:

<Directory "/Users/{USERNAME}/Sites/project">
    Options +Indexes +FollowSymLinks +MultiViews
    AllowOverride All
    require all granted
</Directory>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.