Apache-403禁止访问某些静态文件

Apache-403禁止访问某些静态文件

我在使用 .htaccess 指令时遇到了困难。我正在尝试对 Codeigniter 框架进行 URL 重写。

生产服务器上的一切都按预期运行,但我无法正确设置自己的测试服务器。

测试服务器

URL 重写效果很好,php 文件按预期呈现,但通过 HTML 包含的所有文件(css、js、img)均未显示,因为它们无法访问,原因如下:

403 Forbidden
You don't have permission to access /path/to/file/plugins-min.css
on this server.

这是我的.htaccess 文件:

RewriteEngine On

# Do not enable rewriting for files or directories that exist
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# For requests that are not actual files or directories,
# Rewrite to index.php/URL
RewriteRule ^(.*)$ index.php/$1 [PT,L]

这是我的文档文件夹的 Apache2 配置:

<Directory /document/folder/>
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    AllowOverride All
    Order deny,allow
    Allow from all
</Directory>

当我设置AllowOverrideNone(即不重写 URL)时,静态文件就会正确显示。

当通过脚本上传图像时,即使它们具有与其他不可访问的文件相同的权限/所有者/组,它们也会显示在页面上。

网站上的所有内容都具有相同的权限和所有者。

我认为我的 Apache 配置有一些东西阻止了'包含 HTML' 文件无法访问,正如 Apache 错误日志所述:

[Wed Aug 17 22:29:24 2011] [error] [client <MY IP>] client denied by server
configuration: /var/www/site.com/application/assets/js/admin.js, 
referer: http://<MY IP>/site.com/page/edit/

提前致谢

答案1

使用 AllowOverride All 查找您正在工作的其他目录中影响您配置的 .htaccess 文件时,这种情况非常常见。根据评论主题发布此答案以收集赏金。以下是 find 命令的示例:

寻找文档根目录-名称.htacccess-打印

将打印任何其他.htaccess 文件。

答案2

使用以下命令查找所有.htaccess文件:

find /var/www/ -name .htaccess

暂时改变:

Order deny,allow
Allow from all

到:

Order allow,deny
Allow from all

以确保之前没有Deny处理过的规则。

答案3

在 Apache 配置部分内添加以下规则:

Allow from 127.0.0.1
Allow from localhost

相关内容