Php IIS 10规则重写不使用pho

Php IIS 10规则重写不使用pho,php,iis,url-rewriting,Php,Iis,Url Rewriting,我有一个IIS10服务器,在这个服务器上我运行一个php应用程序。一切都很好,我已经安装了IIS rewrite,它可以很好地用于一个规则,即规范主机名。但是,我还有一个规则,我想限制对目录中特定图像的访问,除非请求只来自一个特定的php页面,我有以下规则。无论我尝试什么,任何人都可以直接在www.mydomain.com/pics/imagename.jpg上浏览图片 我在重写模块中使用了测试URL功能,我的测试通过了jpg链接和允许的页面,因此我相信这没有什么问题 <system.we

我有一个IIS10服务器,在这个服务器上我运行一个php应用程序。一切都很好,我已经安装了IIS rewrite,它可以很好地用于一个规则,即规范主机名。但是,我还有一个规则,我想限制对目录中特定图像的访问,除非请求只来自一个特定的php页面,我有以下规则。无论我尝试什么,任何人都可以直接在www.mydomain.com/pics/imagename.jpg上浏览图片 我在重写模块中使用了测试URL功能,我的测试通过了jpg链接和允许的页面,因此我相信这没有什么问题

<system.webServer>
    <rewrite>
        <rules>
            <clear />
            <rule name="CanonicalHostNameRule1">
                <match url="(.*)" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{HTTP_HOST}" pattern="^www\.domain\.com$" negate="true" />
                </conditions>
                <action type="Redirect" url="http://www.domain.com/{R:1}" />
            </rule>
            <rule name="RestrictHotlinking" patternSyntax="Wildcard" stopProcessing="false">
                <match url="*/pictures/*.jpg" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{HTTP_REFERER}" pattern="http*://www.domain.com/OneAllowedPage.php*" negate="true" />
                </conditions>
                <action type="Rewrite" url="www.domain.com/img/placeholder.jpg" appendQueryString="false" />
            </rule>
        </rules>
    </rewrite>


实际上发现了问题。看起来这是一个额外的正斜杠 下面的两个小改动解决了这个问题。似乎条件的第一个匹配部分的URL表示
www.domain.com/**ThisPartOnly**

   <match url="*pictures/*.jpg" />
   <action type="Rewrite" url="img/placeholder.jpg" ppendQueryString="false" />