服务器无法读取htaccess文件,拒绝访问是安全的

时间:2015-07-12 08:42:40

标签: angularjs .htaccess

我使用AngularJS创建了一个简单的应用程序。当我尝试在我的网站http://demo.gaurabdahal.com/recipefinder中托管该项目时,它显示以下错误:

  

禁止

     

您无权访问此服务器上的/ recipefinder。   服务器无法读取htaccess文件,拒绝访问是安全的

但是,如果我转到http://demo.gaurabdahal.com/,它会按预期显示“拒绝访问”消息,我已打印出来。但是为什么它无法打开AngularJS项目“recipefinder”。如果我尝试在那里放一个简单的HTML应用程序,它就会打开就好了。

当我在github中托管它时,同样的AngularJS项目工作正常(http://gaurabdahal.github.io/recipefinder

我无法理解什么是错的。

15 个答案:

答案 0 :(得分:80)

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

sudo chmod -R 755 <site_top_folder>

为我修好了。

答案 1 :(得分:16)

将公共目录的组设置为nobody。

答案 2 :(得分:16)

当您启动新网站时,这是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文件。如果您的public_html目录中没有.htaccess文件,GoDaddy会强制执行禁止加载站点的规则。您可以使用vi创建此文件(&#34; vi .htaccess&#34;)。在文件中输入以下行:

Order allow,deny
Allow from all
Require all granted

此配置适用于Apache 2.2和Apache 2.4。保存文件(ZZ),然后确保该文件具有644的权限:

chmod 644 .htaccess

像魅力一样。

答案 3 :(得分:12)

您需要在/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 {} \;

在我的情况下(apache web服务器)我使用www-datausergroup

答案 4 :(得分:2)

在我的情况下,apache以某种方式配置错误,所以我必须设置所有父目录的权限。只是设置.htaccess(和它的父目录)的权限不起作用。

答案 5 :(得分:2)

GoDaddy共享服务器解决方案

基本上,我尝试在子域级别上部署单独的Laravel项目时遇到了同样的问题。

文件结构

- public_html (where the main web app resides)
    [works fine]

    - booking.mydomain.com (folder for separate Laravel project)
        [showing error 403 forbidden]

<强> 解决方案

  1. 转到GoDaddy帐户的cPanel
  2. 打开文件管理器
  3. 浏览到显示403 forbidden error
  4. 的文件夹
  5. 在文件管理器中,右键单击该文件夹(在我的情况下是booking.mydomain.com)
  6. 选择更改权限
  7. 选择以下复选框

    a) user - read, write, execute
    b) group - read, execute
    c) world - read, execute
    
    Permission code must display as 755
    
  8. 点击更改权限

  9. 完成工作!

答案 6 :(得分:1)

每个公用文件夹都授予755的权限。问题已解决。

答案 7 :(得分:1)

在Linux中,

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

它将替换project_directory_name_here及其内部内容的所有文件和文件夹权限。

答案 8 :(得分:1)

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

我在将文件所有权更改为其他用户时遇到了这个问题:

这对我有用:

$ sudo chown -R www-data:www-data /var/www/YOUR-DIRECTORY

以下是该问题的更多背景信息:

上述命令将 [该文件夹中] 的所有文件的所有权授予 www-data 用户和组。这是运行 Apache 网络服务器的用户,Apache 需要能够读写 WordPress 文件才能为网站提供服务并执行自动更新。

请务必指向您服务器的相关目录(将 YOUR-DIRECTORY 替换为您的实际文件夹)。

您可以在 digitalocean 上浏览此 insightful article

答案 9 :(得分:0)

只是我的解决方案。我提取了一个文件,做了一些小的更改,并得到了上面的错误。删除所有内容,再次上传并提取,恢复正常。

答案 10 :(得分:0)

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

首先,检查Apache错误日志

for($i=70; $i<=length($input)+1; $i=$i+71){
    substr($input,$i,0) = "\n"; 
}

然后将文件夹权限设置为可执行

nano /var/log/apache2/error.log

还将文件权限设置为可读

sudo chmod 755 /var/www/html/

答案 11 :(得分:0)

我在Fedora上遇到了同样的问题,发现问题是selinux。 测试是否有问题,运行命令: 须藤setenforce 0

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

SELINUX=enforcing
to
SELINUX=disabled

或向selinux添加规则以允许http访问

答案 12 :(得分:-1)

我的经验中的重点:

  • 服务器访问的每个资源必须位于可执行且可读的目录中,因此其他答案中的每个chmod中都有xx5
  • 大多数情况下,网络服务器(我的情况下是apache)既不是用户也不是拥有该目录的组,因此需要再次xx5chmod o+rx

但我得出的更大结论是从小到大开始。

例如,如果 http://myserver.com/sites/all/resources/assets/css/bootstrap.css 产生403错误,查看http://myserver.com/是否有效,然后是sites,然后是sites/all,然后是sites/all/resources,依此类推。

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

  • 在Apache:Options +Indexes

此说明也可能位于您的网络服务器public_html文件夹的.htaccess

答案 13 :(得分:-1)

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

将文件夹的权限设置为755。
chmod 755 folder_name

答案 14 :(得分:-9)

“服务器无法读取htaccess文件”就是这个意思。确保.htaccess文件的权限具有全球可读性。