我有一个asp.net Web表单网站,其旧网址如下: http://example.org/Home.aspx?val1= {val1}&val2 = {val2}&some-dynamic-query-string = {some-value}
我想重定向到新的SEO友好网址,如下所示: http://example.org/Home/ {val1} / {val2}?some-dynamic-query-string = {some-value}
我无法为此在web.config的url重写模块中找出url重写规则。
还请注意,对http://example.org/Home.aspx的请求可以包含这些查询字符串的任意组合,并且适当地,它将重定向到新的url。
示例:
http://example.org/Home.aspx被重定向到http://example.org/Home
http://example.org/Home.aspx?val1=22被重定向到http://example.org/Home/22
http://example.org/Home.aspx?val1=6&val2=3a被重定向到http://example.org/Home/6/3a
http://example.org/Home.aspx?val1=62&val2=4r&fb=123a被重定向到http://example.org/Home/62/4r?&fb=123a
我正在使用以下规则,但在上一个示例中它们不起作用。
<rewrite>
<rules>
<rule name="HomeRedirect3" stopProcessing="true">
<match url="Home.aspx/?"/>
<conditions logicalGrouping="MatchAll">
<add input="{QUERY_STRING}" matchType="Pattern" pattern="^val1=(.*)&val2=(.*)"/>
</conditions>
<action type="Redirect" redirectType="Temporary" url="/Home/{C:1}/{C:2}?{C:3}" appendQueryString="false" />
</rule>
<rule name="HomeRedirect1" stopProcessing="true">
<match url="Home.aspx/?"/>
<conditions logicalGrouping="MatchAll">
<add input="{QUERY_STRING}" matchType="Pattern" pattern="^val1=([a-zA-Z0-9\-+])"/>
</conditions>
<action type="Redirect" redirectType="Temporary" url="/Home/{C:1}" appendQueryString="false" />
</rule>
<rule name="HomeRedirect4" stopProcessing="true">
<match url="(.*).aspx/?"/>
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory"/>
</conditions>
<action type="Redirect" redirectType="Temporary" url="/{R:1}" appendQueryString="false" />
</rule>
</rules>