拒绝访问php应用程序中IIS 7中的特定文件夹

时间:2009-02-02 06:53:23

标签: php configuration iis-7

我正在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>

4 个答案:

答案 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>

请参阅:Request filtering for more info