2014-11-05 50 views
0

我有一个文件夹,其中包含各种文件夹中的HTML,CSS,JS,图像文件。出于安全原因,我想将它放在Web根目录之外。从外部web根目录在Apache服务器上运行一个Html文件

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

但是,在页面中存在超链接存在问题。例如,链接到JavaScript文件中的页面:在http://localhost/lms/APIConstants.js

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

搜索文件,并返回

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

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

+0

然后让它成为一个完整的url – 2014-11-05 06:29:27

+0

这可能会帮助你http://stackoverflow.com/questions/13550471/php-include-file-in-webroot-from-file-outside-webroot – Chella 2014-11-05 06:33:56

+0

我不能那样做,这个HTML,CSS,JS文件是自动生成的。 – Aniruddha 2014-11-05 06:34:03

回答

1

终于解决了这个问题..可能对别人有帮助。

的步骤,随访:

  • 使用一个单独的文件从外部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

+1

确保只有某些文件可以从filereader读取。否则,可以使用简单的获取请求来读取诸如日志之类的文件,这可能存在安全风险。 – cnvzmxcvmcx 2014-11-12 15:27:25

0

当你包含一个文件时,代码/脚本根据它所包含的新路径运行。

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

所以给出这样的路径。如果Ims文件夹是一步到根目录。

src="../lms/APIConstants.js" 
相关问题