【问题标题】:html cannot see any files when it is outside of root web directoryhtml 在根 Web 目录之外时看不到任何文件
【发布时间】:2015-01-21 14:02:13
【问题描述】:

我的 html, css, javascript... 在目录 /www/ 在他们自己的文件夹中 /www/html, /www/css, /www/js... web root 位于 /www/www/

我像这样在我的 php 中使用函数 readfile

readfile("../html/home.html");

要读取 html 文件,但我会从 html 文件中获得大量 404 客户端。

<script src="../js/javascript_file.js"></script>

会给出 404

为什么会发生这种情况?有解决方法吗?

【问题讨论】:

  • 可能是文件夹的权限问题,你可以改,但是有安全隐患。

标签: php html css web


【解决方案1】:

您无法在客户端浏览文档 webroot 的上方。

这是一项安全功能,默认情况下在 Apache Webserver 上启用。 例如,通过在地址栏中输入../../../etc/passwd 应该无法访问/etc/passwd(UNIX 系统上具有用户密码哈希的文件)的内容。

您可以尝试将 JavaScript 和 CSS 文件放在另一个目录中。

或者,您可以尝试将 DocumentRoot 设置为 /www 并将 DirectoryIndex 设置为 ./www/home.html。然后可以向上导航目录索引。

【讨论】:

  • 是的,无论如何我这样做是有道理的,我这样做的唯一原因是为了防止用户在登录之前访问文件有没有办法在不影响我尝试使用 htaccess 的 php 脚本的情况下阻止地址导航,但它阻止了html 从访问图像/其他
  • @Patrick 有很多方法可以让用户只有在登录时才提供“受保护”文件。一种常用的方法是在 .php 中使用适当的 content-type-header 打印文件内容-文件。然后您可以先查看登录信息。另一种服务器端方法是在只包含重要文件的目录前面设置一个 htaccess-authentification。
猜你喜欢
  • 2013-07-19
  • 2013-04-29
  • 2017-11-21
  • 2011-03-03
  • 2012-07-24
  • 2016-11-25
  • 2017-10-09
  • 1970-01-01
  • 2012-04-07
相关资源
最近更新 更多