我的服务器上已启用ServerSide Include(SSI)。但是,我不希望它在我的文件夹中执行。所以,我想添加一个.htaccess文件来禁用该文件夹中的SSI。我该怎么办? 我试过了
RemoveHandler server-parsed .shtml
但它无法正常工作。我如何实现它?
答案 0 :(得分:1)
首先,您对RemoveHandler
的使用没有意义。 The documentation表示语法为RemoveHandler extension [extension] ...
,这意味着除了删除以.shtml
结尾的文件的处理程序外,您还要删除以server-parsed
结尾的文件的处理程序。 / p>
处理程序是一种告诉Apache的方法,对于某些文件,它应该被其他程序解释,而不是直接发送给用户。例如,以.php
结尾的文件的处理程序将首先通过php解析器发送文件。删除此处理程序会将该文件中的php代码公开给浏览器。 据我所知实际上,如果配置正确,Apache处理.shtml
文件没有被任何东西解释,所以删除这些文件不存在的处理程序对你没有任何帮助。.shtml
文件本身。这不是由处理程序完成的,而是由一些内部选项完成的。请参阅here。
您似乎想要做的是在有人试图直接访问您的文件时发送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知道它应该停止这个重写周期。我不认为在禁止请求时它会启动一个新的重写周期,因为在发送禁止错误时不会执行任何脚本。