IIS 10规则重写不能与pho

时间:2017-01-16 17:50:04

标签: php iis url-rewriting

我有一台IIS10服务器,我正在运行一个php应用程序。一切都工作得很好我安装了IIS重写,它适用于一个规则,这是规范的主机名。但是,我还有一个规则,我想限制访问目录中的特定图像,除非请求只来自一个特定的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>

1 个答案:

答案 0 :(得分:0)

实际上发现了这个问题。看起来这是一个额外的正斜线 下面的两个小变化解决了这个问题。似乎条件的第一个MATCH Parth的URL表示www.domain.com/**ThisPartOnly**

之后的内容
   <match url="*pictures/*.jpg" />
   <action type="Rewrite" url="img/placeholder.jpg" ppendQueryString="false" />