.htaccess 服务器无法读取htaccess文件,拒绝访问以确保安全
我用AngularJS创建了一个简单的应用程序。当我试图在我的网站上主持该项目时,显示以下错误: 禁止 您没有访问此服务器上的/recipefinder的权限。 服务器无法读取htaccess文件,拒绝访问以确保安全 但若我转到它,它会像预期的那个样显示“拒绝访问”消息,我已经打印出来了。但为什么它无法打开AngularJS项目的“recipefinder”呢。如果我试着在那里放一个简单的HTML应用程序,它就可以打开了 当我在github()中托管AngularJS项目时,同样的AngularJS项目工作得很好.htaccess 服务器无法读取htaccess文件,拒绝访问以确保安全,.htaccess,.htaccess,我用AngularJS创建了一个简单的应用程序。当我试图在我的网站上主持该项目时,显示以下错误: 禁止 您没有访问此服务器上的/recipefinder的权限。 服务器无法读取htaccess文件,拒绝访问以确保安全 但若我转到它,它会像预期的那个样显示“拒绝访问”消息,我已经打印出来了。但为什么它无法打开AngularJS项目的“recipefinder”呢。如果我试着在那里放一个简单的HTML应用程序,它就可以打开了 当我在github()中托管AngularJS项目时,同样的Angular
我不明白出了什么问题。服务器无法读取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项目时遇到了同样的问题 文件结构 解决方案
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 {} \;