我有一个文件夹,其中包含各种文件夹中的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"