Web.config URL重写特定的匹配URL

时间:2013-06-07 20:53:25

标签: url-rewriting web-config

我有以下web.config网址重写规则:

<rule name="RedirectUserFriendlyURL1" stopProcessing="true">
    <match url="^propertysearch\.asp$" />
    <conditions>
        <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
        <add input="{QUERY_STRING}" pattern="^urlrewrite=([^=&amp;]+)$" />
    </conditions>
    <action type="Redirect" url="{C:1}" appendQueryString="false" />
</rule>
<rule name="RewriteUserFriendlyURL1" stopProcessing="true">
    <match url="^([^/]+)/?$" />
    <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    </conditions>
    <action type="Rewrite" url="propertysearch.asp?urlrewrite={R:1}" />
</rule>

问题是它是应用于所有内容所以我想要做的是更改匹配url语法,告诉它只在URL中包含“-to-rent-in-”时运行,所以...

www.domain.com/villas-to-rent-in-florida

将符合资格并应用规则,但这不会

www.domain.com/testentry

我尝试了不同的变种,但它仍然遇到错误:(

1 个答案:

答案 0 :(得分:0)

要仅在-to-rent-in-是网址第一部分的一部分时才让网址触发重写,您可以使用:

<rule name="RewriteUserFriendlyURL1" stopProcessing="true">
    <match url="^(.+-to-rent-in-.+)/?$" />
    <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    </conditions>
    <action type="Rewrite" url="propertysearch.asp?urlrewrite={R:1}" />
</rule>

url="^(.+-to-rent-in-.+)/?$"将匹配任何包含-to-rent-in-之前至少一个字符且至少包含一个字符的网址。

您不希望将之前或之后的字符限制为仅字母数字,因为您的网址可能如下:www.domain.com/apartments-to-rent-in-new-york(其中new-york包含-)< / p>