服务器无法读取htaccess文件,拒绝访问是安全的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务器无法读取htaccess文件,拒绝访问是安全的相关的知识,希望对你有一定的参考价值。
我使用AngularJS创建了一个简单的应用程序。当我试图在我的网站http://demo.gaurabdahal.com/recipefinder中托管该项目时,它显示以下错误:
被禁止
您无权访问此服务器上的/ recipefinder。服务器无法读取htaccess文件,拒绝访问是安全的
但是,如果我去http://demo.gaurabdahal.com/它会按预期显示“拒绝访问”消息,我已打印出来。但是为什么它无法打开AngularJS项目“recipefinder”。如果我试图在那里放一个简单的html应用程序,它打开就好了。
当我在github(http://gaurabdahal.github.io/recipefinder)中托管它时,相同的AngularJS项目工作正常
我无法理解什么是错的。
我也有这个问题。我的建议是查看您的服务器错误日志文件。对我来说,这是项目的顶级目录不可读。错误日志清楚地说明了这一点。一个简单的
sudo chmod -R 755 <site_top_folder>
为我修好了。
当您启动新网站时,这是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创建此文件(“vi .htaccess”)。在文件中输入以下行:
Order allow,deny
Allow from all
Require all granted
此配置适用于Apache 2.2和Apache 2.4。保存文件(ZZ),然后确保该文件具有644的权限:
chmod 644 .htaccess
奇迹般有效。
将您的公共目录组设置为nobody。
您需要在/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-data
为user
和group
在我的情况下,apache以某种方式配置错误,所以我必须设置所有父目录的权限。只是设置.htaccess(和它的父目录)的权限不起作用。
GoDaddy共享服务器解决方案
基本上,我在尝试在子域级别上部署单独的Laravel项目时遇到了同样的问题。
文件结构
- public_html (where the main web app resides)
[works fine]
- booking.mydomain.com (folder for separate Laravel project)
[showing error 403 forbidden]
解
- 转到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
- 单击更改权限
任务完成!
只是我的解决方案我提取了一个文件,进行了一些小改动,并得到了上面的错误。删除所有内容,重新上传和提取,以及正常业务。
我的经验中的重点:
- 服务器访问的每个资源必须位于可执行和可读的目录中,因此其他答案中的每个chmod中的
xx5
。 - 大多数情况下,webserver(在我的情况下是apache)既不作为用户也不作为拥有该目录的组运行,所以再次需要
xx5
或chmod 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
此指令也可能位于您的webserver public_html文件夹的.htaccess
中。
“服务器无法读取htaccess文件”就是这个意思。确保.htaccess
文件的权限是世界可读的。
以上是关于服务器无法读取htaccess文件,拒绝访问是安全的的主要内容,如果未能解决你的问题,请参考以下文章