2011-10-24 7 views
1

Comment réécrire tout après le point d'interrogation (?) En tant que paramètre?Réécriture d'URL IIS 7

Par exemple, j'ai une url comme: http://www.example.com?abcdefg/test/module?wiating4request

avis après la première marque de question que nous avons une autre dans la chaîne de requête. J'ai fondamentalement besoin de poster à cette URL et je ne peux pas modifier l'URL, donc je dois faire avec ce qui est fourni.

J'ai vu quelque chose de similaire ici: How can I use mod_rewrite to remove everything after the ? (question mark) in a URL?

Gardez à l'esprit c'est pour IIS 7.

Toutes les idées?

Répondre

1

Il est possible de le faire avec une règle de réécriture dans le cas où vous ne voulez faire correspondre les URL qu'avec un seul point d'interrogation, comme votre exemple. Vous pouvez ensuite utiliser cette règle:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="Clean extra question mark from query string" stopProcessing="true"> 
        <match url="(.*)" /> 
        <conditions> 
         <add input="{QUERY_STRING}" pattern="^(.+?)(\?(.+))*$" /> 
        </conditions> 
        <action type="Rewrite" url="/{URL}?{C:1}&amp;{C:3}" appendQueryString="false" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 

Si vous voulez faire correspondre un nombre illimité de trop de points d'interrogation, je pense que vous aurez besoin de revenir à un custom rewrite provider comme indiqué dans l'article lié. Vous pourriez alors vous retrouver avec quelque chose comme:

<rule name="Clean extra question mark from query string" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions> 
     <add input="{QUERY_STRING}" pattern="^$" negate="true" /> 
    </conditions> 
    <action type="Rewrite" url="/{URL}?{ReplaceProvider:{QUERY_STRING}}" appendQueryString="false" /> 
</rule>