从web根目录外部在Apache Server中运行Html文件


Run an Html file in Apache Server from outside web root

我有一个文件夹,其中包含各种文件夹中的HTML、CSS、JS和图像文件。出于安全考虑,我想把它放在web根目录之外。

我遇到了一个使用PHP的file_get_contents函数的解决方案。

但是页面中存在超链接的问题。例如,页面中javascript文件的链接:

<script src="lms/APIConstants.js" type="text/javascript"></script>

http://localhost/lms/APIConstants.js中搜索文件并返回错误

Failed to load resource: the server responded with a status of 404 (Not Found)
http://localhost/lms/APIConstants.js

我知道使用.htaccess文件从web根目录隐藏一些文件夹。我正在寻找其他一些有见地的解决方案。

最终解决了这个问题。。可能对其他人有帮助。

遵循的步骤:

  • 使用一个单独的文件从web根目录外读取(比如filereader.php
  • 使用编码本地文件路径的URL调用此文件。http://localhost.ca/lms/filereader.php/path/to/local/file.html
  • 解析URL以获取路径-/path/to/local/file.html
  • 应用PHP的readfile()函数从获得的路径中读取

这样,file.html中的所有超链接都将从以下路径加载。

http://localhost.ca/lms/filereader.php/path/to/local/

必须定义每个文件的mime类型。此外,当找不到文件时,将使用PHP的http_response_code()抛出适当的http响应代码。

注意:您可能需要在Apache配置中启用AcceptPathInfo

当您包含一个文件时,代码/脚本将根据包含该文件的新路径运行。

它在根目录下的文件夹Ims中找到APIConstants.js文件。但实际上它在根目录之外。

因此,给出这样的路径。。如果Ims文件夹是向下到根目录的一步。

src="../lms/APIConstants.js" 
相关文章: