如何禁用服务器端包含(SSI)使用.htaccess



服务器端包含(SSI)已启用。但是,我不希望它在我的文件夹中执行。所以,我想添加一个。htaccess文件来禁用该文件夹中的SSI。我该怎么做呢?我试着

 RemoveHandler server-parsed .shtml

但它不起作用。我如何实现它?

首先,您对RemoveHandler的使用没有意义。文档说语法是RemoveHandler extension [extension] ...,这意味着除了删除以.shtml结尾的文件的处理程序外,还删除了以server-parsed结尾的文件的处理程序。

处理程序是一种告诉Apache,对于某些文件,它应该由其他程序解释,而不是直接发送给用户的方法。例如,对于以.php结尾的文件,处理程序将首先通过php解析器发送该文件。删除此处理程序将把该文件中的php代码暴露给浏览器。据我所知,.shtml文件不会被任何东西解释,因此删除这些文件不存在的处理程序将不会以任何方式帮助您。实际上,如果配置正确,Apache会自己处理.shtml文件。这不是由处理程序完成的,而是由一些内部选项完成的。看到这里。

当有人试图直接访问你的文件时,你似乎想要做的是发送一个HTTP 403: Forbidden错误代码。有一些方法可以做到这一点,例如使用mod_rewrite (docs)。确保mod_rewrite已启用,然后将以下内容添加到文档根目录下的.htaccess:

#We first need to make sure that we want to rewrite
RewriteEngine on
#Forbid access to all files ending with `.shtml`
RewriteRule .shtml$ - [F,L]

由于内部包含不关心mod_rewrite做什么,这工作得很好。RewriteRule对所有匹配第一个参数的请求执行。第二个参数(-)表示url没有被重写。F标志让Apache知道发送Forbidden错误,L标志让mod_rewrite知道它应该停止这个重写循环。当请求被禁止时,我不认为它会开始一个新的重写周期,因为当被禁止的错误被发送时,没有脚本会被执行。

完成在Apache Webserver中关闭/禁用服务器端包含和CGI执行:

解决方案:

关闭服务器端包含(mod_include)的步骤CGI执行修改httpd.conf apache主配置文件或.htaccess。这可以应用于根目录或特定目录

Options -Indexes +FollowSymlinks -Includes -ExecCGI

如果你想在.htaccess。在根目录(public_html)前创建一个.htaccess,并添加如下内容:

RewriteOptions InheritBefore
Options -Indexes +FollowSymlinks -Includes -ExecCGI

相关内容

  • 没有找到相关文章

最新更新