我有以下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=([^=&]+)$" />
</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
我尝试了不同的变种,但它仍然遇到错误:(
答案 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>