URL重写{QUERY-STRING}输入正则表达式以处理动态查询字符串

时间:2019-03-08 08:08:51

标签: asp.net url-rewriting webforms url-rewrite-module

我有一个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=(.*)&amp;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>

0 个答案:

没有答案