2010-11-10 12 views
1

J'ai des problèmes de redirection vers une autre URL en fonction des paramètres de chaîne de requête. J'ai url pour le service de cartographie, par exemple "http://www.mydomain.com/?lon=111 & lat = 222 & zoom = 3" et j'ai besoin qu'il soit redirigé vers "http: // www. mydomain.com/111/222/3 ".Module de réécriture d'URL IIS: redirection basée sur la chaîne de requête

J'ai cette règle dans mon web.config, mais il ne fonctionne pas

<rule name="Location redirect"> 
    <match url="\?lon=(\d+)&amp;lat=(\d+)&amp;zoom=(\d+)" /> 
    <action type="Redirect" url="{R:1}/{R:2}/{R:3}" redirectType="Found" /> 
</rule> 

Répondre

2

La raison est que l'URL ne comprend pas de chaîne de requête, vous nies d'utiliser des conditions pour cela. Si vous utilisez l'interface utilisateur, il inclut un modèle d'URL convivial qui va le générer pour vous. Ci-dessous vous trouverez la règle Réécrire ainsi que la redirection afin que le trafic existant (URL laid) est redirigé vers la jolie URL:

  <rule name="RedirectUserFriendlyURL1" stopProcessing="true"> 
       <match url="^$" /> 
       <conditions> 
        <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" /> 
        <add input="{QUERY_STRING}" pattern="^lon=([^=&amp;]+)&amp;lat=([^=&amp;]+)&amp;zoom=([^=&amp;]+)$" /> 
       </conditions> 
       <action type="Redirect" url="/{C:1}/{C:2}/{C:3}" 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="?lon={R:1}&amp;lat={R:2}&amp;zoom={R:3}" /> 
      </rule> 
+0

Merci beaucoup! –