.htaccess 服务器无法读取htaccess文件,拒绝访问以确保安全

.htaccess 服务器无法读取htaccess文件,拒绝访问以确保安全,.htaccess,.htaccess,我用AngularJS创建了一个简单的应用程序。当我试图在我的网站上主持该项目时,显示以下错误: 禁止 您没有访问此服务器上的/recipefinder的权限。 服务器无法读取htaccess文件,拒绝访问以确保安全 但若我转到它,它会像预期的那个样显示“拒绝访问”消息,我已经打印出来了。但为什么它无法打开AngularJS项目的“recipefinder”呢。如果我试着在那里放一个简单的HTML应用程序,它就可以打开了 当我在github()中托管AngularJS项目时,同样的Angular

我用AngularJS创建了一个简单的应用程序。当我试图在我的网站上主持该项目时,显示以下错误:

禁止

您没有访问此服务器上的/recipefinder的权限。 服务器无法读取htaccess文件,拒绝访问以确保安全

但若我转到它,它会像预期的那个样显示“拒绝访问”消息,我已经打印出来了。但为什么它无法打开AngularJS项目的“recipefinder”呢。如果我试着在那里放一个简单的HTML应用程序,它就可以打开了

当我在github()中托管AngularJS项目时,同样的AngularJS项目工作得很好


我不明白出了什么问题。

服务器无法读取htaccess文件就是这个意思。确保您的
.htaccess
文件上的权限是世界可读的。

将您的公用目录组设置为NONOBODY。

这是您打开新网站时GoDaddy虚拟服务器托管的常见问题

假设您有对服务器的SSH访问权(您必须在cPanel上启用它),请登录到您的帐户。成功登录后,您将被置于您帐户的主目录中。网站的DocumentRoot位于名为public_html的子目录中。GoDaddy默认此目录的权限为750,但这些权限不足以允许Apache读取网站的文件。您需要将此目录的权限更改为755(chmod 755 public_html)

将网站的文件复制到public_html目录中(scp和rsync都用于将文件复制到GoDaddy Linux服务器)

接下来,确保public_html下的所有文件都是可读的。要执行此操作,请使用以下命令:

cd public_html
chmod -R o+r *
如果您有其他子目录(如css、js和img),请通过启用“读取”和“执行”进行全局访问,确保它们是全局可访问的:

chmod o+rx css
chmod o+rx img
chmod o+rx js
最后,您需要在public_html文件中有一个.htaccess文件。GoDaddy强制执行一条规则,如果您的公共html目录中没有.htaccess文件,则禁止加载网站。您可以使用vi创建此文件(“vi.htaccess”)。在文件中输入以下行:

Order allow,deny
Allow from all
Require all granted
此配置适用于Apache2.2和Apache2.4。保存文件(ZZ),然后确保该文件具有644的权限:

chmod 644 .htaccess

工作起来很有魅力。

我经验中的要点:

  • 服务器访问的每个资源必须位于可执行且可读的目录中,因此在其他答案中的每个chmod中都有
    xx5
  • 大多数时候,Web服务器(在我的例子中是apache)既不是以用户身份运行,也不是在拥有目录的组中运行,因此同样需要
    xx5
    chmod o+rx
但是我得出的更大的结论是从少到多开始。

例如,如果
http://myserver.com/sites/all/resources/assets/css/bootstrap.css
产生403错误,请查看是否
http://myserver.com/
起作用,然后是
站点
,然后是
站点/所有
,然后是
站点/所有/资源
,依此类推

如果您的服务器启用了目录索引,则会有所帮助:

  • 在Apache中:
    Options+index

此指令也可能位于webserver public_html文件夹的
.htaccess
中。

在我的情况下,apache配置错误(?),因此我也必须设置所有父目录的权限。只是将权限设置为.htaccess(及其父目录)不起作用。

我也遇到了这个问题。我的建议是查看服务器错误日志文件。对我来说,这是因为项目的顶级目录不可读。错误日志清楚地说明了这一点。简单的

sudo chmod 755 <site_top_folder>
sudo chmod 755

为我修复了它。

GoDaddy共享服务器解决方案

我在试图在子域级别部署单独的Laravel项目时遇到了同样的问题

文件结构

解决方案

  • 去你的GoDaddy账户的cPanel

  • 打开文件管理器

  • 浏览到显示403禁止错误的文件夹

  • 在文件管理器中,右键单击文件夹(在我的例子中是booking.mydomain.com)

  • 选择“更改权限”

  • 选中以下复选框

     a) user - read, write, execute
     b) group - read, execute
     c) world - read, execute
    
     Permission code must display as 755
    
  • 单击“更改权限”


  • 您需要在
    /var/www/html/
    或项目所在的任何其他目录中运行这些命令:

    sudo chgrp -R GROUP ./
    sudo chown -R USER:GROUP ./
    find ./ -type d -exec chmod 755 -R {} \;
    find ./ -type f -exec chmod 644 {} \;
    

    在我的例子(ApacheWeb服务器)中,我使用
    www-data
    作为
    USER
    GROUP
    的解决方案。我提取了一个文件,做了一些小改动,得到了上面的错误。删除所有内容,重新上传和提取,正常业务

    对于运行在Ubuntu上的Apache,解决方案是检查错误日志,这表明错误与文件夹和文件权限有关

    首先,检查Apache错误日志

    nano /var/log/apache2/error.log
    
    然后将文件夹权限设置为可执行

    sudo chmod 755 /var/www/html/
    
    还将文件权限设置为可读

    sudo chmod 644 /var/www/html/.htaccess
    

    每个公用文件夹都有权访问755。问题解决。

    我在Fedora上遇到了同样的问题,发现问题出在selinux上。 要测试是否存在问题,请运行命令: sudo set0

    否则,或更改文件/etc/sysconfig/selinux

    SELINUX=enforcing
    to
    SELINUX=disabled
    

    或者将规则添加到selinux以允许http访问

    在更改cpanel中的php版本后,我在rackspeed服务器上遇到了相同的问题。原来它还更改了文件夹的权限。。。我使用将文件夹的权限设置为755

    chmod 755 folder_name
    
    在linux中

    find project_directory_name_here -type d -exec chmod 755 {} \;
    find project_directory_name_here -type f -exec chmod 644 {} \;
    

    它将替换
    project\u directory\u name\u的所有文件和文件夹权限及其内部内容。

    好的,我最近在
    Ubuntu 20.04
    服务器上使用
    apache2
    进行
    WordPress
    安装时也遇到了同样的问题

    当我将文件所有权更改为另一个用户时,我遇到了这个问题
    find project_directory_name_here -type d -exec chmod 755 {} \;
    find project_directory_name_here -type f -exec chmod 644 {} \;