我正在IIS7上运行PHP应用程序。我想通过修改web.config
来保护特定文件夹。我不想在配置中使用<location>
标记,因为这会将用户重定向到登录页面。而不是,我想实施HttpNotFoundHandler
。
比如说,http://domain.com/SecureFolder是我想要实现的目录HttpNotFoundHandler
。当用户尝试访问该文件夹时,应显示404页面。
安全文件夹只能通过子域访问。下面是配置文件,我正在尝试做必要的但是没有用。
<?xml version="1.0"?>
<configuration>
<connectionStrings />
<appSettings />
<system.web>
<customErrors mode="RemoteOnly"></customErrors>
<httpHandlers>
<add path="~/securefolder" verb="*" type="System.Web.HttpNotFoundHandler" validate="true"/>
</httpHandlers>
</system.web>
</configuration>
答案 0 :(得分:0)
您将需要通配符映射。查看:http://blogs.iis.net/ruslany/archive/2008/09/30/wildcard-script-mapping-and-iis-7-integrated-pipeline.aspx
从那里,您可以解析网址并确定是否应该抛出404。
答案 1 :(得分:0)
您可以使用URL Rewrite Module撰写自定义回复操作。
CustomResponse操作会导致URL 重写模块来响应HTTP 客户端使用用户指定的 状态代码,子代码和原因。 使用CustomResponse操作意味着 没有后续规则 之后评估了当前的URL 执行此操作。
答案 2 :(得分:0)
路径不应该是path="securefolder/*.*"
吗?
我在IIS6上工作,但仍然没有分配给ASP.NET ISAPI过滤器的文件扩展名由IIS(即* .txt)提供,因此我必须将.txt分配给IIS上的ASP.NET ISAPI过滤器。 / p>
答案 3 :(得分:0)
实际上我的建议是在IIS级别上使用为所谓的请求过滤设计的功能。您只需添加如下配置文件:
<configuration>
<system.webServer>
<security>
<requestFiltering>
<hiddenSegments>
<add segment="securefolder" />
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
</configuration>