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