Eyal
Eyal

Reputation: 4763

IIS 8.5 rewrite: pass dynamic parameter

I am using the flowing rewrite map:

 <rewrite>
      <rewriteMaps>
        <rewriteMap name="OldToNew">
          <add key="/area.aspx?id=1" value="/area/1" />
          <add key="/area.aspx?id=2" value="/area/2" />
          <add key="/area.aspx?id=3" value="/area/3" />
          <add key="/area.aspx?id=4" value="/area/4" />

        </rewriteMap>
      </rewriteMaps>
      <rules>
        <rule name="Rewrite rule1 for OldToNew">
          <match url=".*" />
          <conditions>
            <add input="{OldToNew:{REQUEST_URI}}" pattern="(.+)" />
          </conditions>
          <action type="Redirect" url="{C:1}" appendQueryString="false"  />
        </rule>
      </rules>
    </rewrite>

Instead of writing each area.aspx page, I would like to transfer the page 'id' value as a parameter to the key value.

How can I do this?

Thanks.

Upvotes: 0

Views: 500

Answers (1)

Cyril Durand
Cyril Durand

Reputation: 16192

rewritemap is used to associate 2 urls when there is no relation between urls. In your case, you could use regular expression matching.

The following rule should work

<rewrite>
  <rules>
    <rule name="Rule1">
      <match url=".*" />
      <conditions>
        <add input="{REQUEST_URI}" pattern="/area.aspx?id=(.+)" />
      </conditions>
      <action type="Redirect" url="/area/{C:1}" appendQueryString="false"  />
    </rule>
  </rules>
</rewrite> 

Upvotes: 1

Related Questions