.htaccess 文件未被读取

Posted

技术标签:

【中文标题】.htaccess 文件未被读取【英文标题】:.htaccess file Not Being Read 【发布时间】:2015-06-08 22:22:20 【问题描述】:

我的 .htaccess 文件没有被读取,我在 /var/www/html 中放了一个 .htaccess 文件,其中包含

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

然后我的 http.conf 文件看起来像这样

ServerRoot "/etc/httpd"
<Directory />
AllowOverride none
Require all denied
</Directory>

DocumentRoot "/var/www/html"

<Directory "/var/www">
AllowOverride None
# Allow open access:
Require all granted
</Directory>

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>

我要访问的文件位于我的 /var/www/html 文件夹中,但是当我尝试从另一台服务器访问它时,我不断收到此错误

Image from origin 'http://serverB' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://example.com' is therefore not allowed access.

为什么我的 .htacces 没有被读取,我怎样才能让它被读取?

谢谢

【问题讨论】:

ls -l 会显示文件的权限,也许会有线索。 @ESYSCODER 这列出了我根目录中文件的权限我不确定这有什么帮助? 我在想你会把它的结果添加到答案中。 .htaccess 的权限是否允许 apache 读取它?用户/组匹配apache进程用户/组? @ESYSCODER 我的 .htaccess 文件位于 /var/www/html 而不是 /root 并且 .htaccess 文件的所有者和组是未知的,我需要将其设置为 apache 吗? Apache 必须能够读取它,在/var/www/html 执行chmod 0644 .htaccess 以允许所有人读取它或将用户更改为apache 用户。 【参考方案1】:

服务器上是否启用了 mod_headers?用这个命令检查:

apache2ctl -M

如果没有,请使用以下命令启用它:

sudo a2enmod headers

之后重启apache服务器。

如果仍然无法正常工作,请查看以下答案: https://***.com/a/13871027/2507790

【讨论】:

我在运行第一个命令时得到-bash: apache2ctl: command not found,在运行第二个命令时得到sudo: a2enmod: command not found 在 centos 上使用这个:httpd -M 当我这样做时,我得到了一长串模块 查看此答案以更好地了解 centos 上的 apache 模块:serverfault.com/a/56435/325169。为了确保服务器正在读取 htaccess,请尝试其他方法,也许是来自 htaccess 文件的重定向【参考方案2】:

尝试将此行添加到.htaccess 文件中。

每当我使用反向代理时,我都会遇到同样的问题,因为它是我的开发机器,我只需将这些行添加到 .htaccess 文件中,它就解决了这个问题。

<FilesMatch "\.(php)$">
  <IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
  </IfModule>
</FilesMatch>

【讨论】:

【参考方案3】:

您还需要在/html 文件中允许AllowOverride All,我不知道为什么,但我遇到了同样的问题,还请确保在保存.htaccess 文件后重新启动apache,否则更改将不会申请。

还要确保您在其他任何地方没有任何其他 .htaccess 文件,因为使用 add 可能会额外添加标题导致错误。

【讨论】:

以上是关于.htaccess 文件未被读取的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 301 http:// 重定向到 https:// 未被 Google 索引

服务器无法读取htaccess文件

保护要读取的htaccess文件

PHP强制下载,htaccess拒绝所有,无法读取文件头

Web 服务器未读取 .htaccess 文件

.htaccess 没有被使用 XAMPP 读取