IIS Url 重写映射和通配符 URL
IIS Url Rewrite Maps & Wildcard URLs
使用 IIS Url Rewrite,是否可以使用 RewriteMaps 匹配通配符 URLs?例如,我有以下重写规则:
<rule name="Disable access except for RewriteMap URLs" enabled="true" stopProcessing="true">
<conditions>
<add input="{Allowed Urls:{URL}}" pattern="1" negate="true" />
</conditions>
<match url="(.*)" />
<action type="Redirect" url="http://{HTTP_HOST}" />
</rule>
它使用以下 RewriteMap:
<rewriteMap name="Allowed Urls">
<add key="/products" value="1" />
<add key="/products/product-1" value="1" />
<add key="/products/product-2" value="1" />
</rewriteMap>
我想修改我的 RewriteMap 以包含一个通配符 URL 所以我有一个 add
元素匹配以下 URLs:
/products/id/1
/products/id/2
/products/id/3
/products/id/4
这样的事情可能吗?
我通过向我的 RewriteRule 添加附加条件解决了这个问题,如下所示:
<rule name="Disable access except for RewriteMap URLs" enabled="true" stopProcessing="true">
<conditions>
<add input="{Allowed Urls:{URL}}" pattern="1" negate="true" />
<add input="{REQUEST_URI}" negate="true" pattern="^/products/id/(.*)" ignoreCase="true" />
</conditions>
<match url="(.*)" />
<action type="Redirect" url="http://{HTTP_HOST}" />
</rule>
使用 IIS Url Rewrite,是否可以使用 RewriteMaps 匹配通配符 URLs?例如,我有以下重写规则:
<rule name="Disable access except for RewriteMap URLs" enabled="true" stopProcessing="true">
<conditions>
<add input="{Allowed Urls:{URL}}" pattern="1" negate="true" />
</conditions>
<match url="(.*)" />
<action type="Redirect" url="http://{HTTP_HOST}" />
</rule>
它使用以下 RewriteMap:
<rewriteMap name="Allowed Urls">
<add key="/products" value="1" />
<add key="/products/product-1" value="1" />
<add key="/products/product-2" value="1" />
</rewriteMap>
我想修改我的 RewriteMap 以包含一个通配符 URL 所以我有一个 add
元素匹配以下 URLs:
/products/id/1
/products/id/2
/products/id/3
/products/id/4
这样的事情可能吗?
我通过向我的 RewriteRule 添加附加条件解决了这个问题,如下所示:
<rule name="Disable access except for RewriteMap URLs" enabled="true" stopProcessing="true">
<conditions>
<add input="{Allowed Urls:{URL}}" pattern="1" negate="true" />
<add input="{REQUEST_URI}" negate="true" pattern="^/products/id/(.*)" ignoreCase="true" />
</conditions>
<match url="(.*)" />
<action type="Redirect" url="http://{HTTP_HOST}" />
</rule>