如何拒绝直接访问我不希望用户直接访问它但允许服务器/ localhost访问的目录中的文件,因为我试图避免直接访问的目录包含输出/解析的HTML文件通过PHP。
目录列表如下所示:
template
|
|
+--------> acp
| |
| +------> acp_index.html
| +------> acp_settings.html
|
+--------> css
| |
| +------> stylesheet.css
|
+--------> js
| |
| +------> scripts.js
|
+---> index.html
+---> login.html
+---> etc...
在template/acp
我需要避免直接访问文件,但localhost /服务器应该能够访问和解析它。
答案 0 :(得分:3)
如果我理解这一点,你想让人们离开template/acp
,同时仍允许服务器访问这些文件吗?
您可以制作.htaccess
并将其放在template/acp
中,该文件应包含deny from all
字样,就像那样,每个试图获取该文件的人都无法但是,服务器仍然可以通过。 php或其他服务器端脚本语言......
在php中,您可以使用include()或require()等函数将文件包含在php文件中,甚至可以从包含的文件中执行php代码,或者使用类似{{3}的文件读取文件}或fread() ...
但是,如果您不使用任何服务器端脚本,如果您仍然需要用户能够查看来自他们的内容,则无法完全避免直接访问文件...
请注意,所有类型的Web服务器都不支持.htaccess。 Apachee支持它,而其他像lighttpd则不支持。
答案 1 :(得分:1)
如果您从不需要直接访问这些文件,只需从PHP解析,那么将这些文件放在网络目录之外。如果文件不在web目录中(并且你没有在Apache中设置一些别名路径)那么有一天有人就无法访问它们。
PHP不限于网络目录,PHP可以访问服务器中/ tmp,/ etc /中的文件(实际上这是一个问题)。每个文件都是apache用户&组可读取可以通过PHP读取。
On PHp设置将限制此项,它是 open_basedir ,如果设置了此设置,则您可以在open_basedir中的目录树的目录树中查看文件。所以你可能需要在那里添加你的模板目录。
您可能还需要更改 include_dir 设置以添加模板位置并编写更简单的include_once或require_once说明。