2011-05-26 5 views
3

J'ai lu les fils et je ne peux toujours pas sortir, mon problème, je sais, mais se demander si on pouvait me diriger dans la bonne direction.IIS avec Réécriture chaîne de requête et d'interrogation IIS 7

J'ai installé une règle:

www.mydomain.com/productlist.asp?CategoryID=2 

réécrite pour

www.mydomain.com/homeware/cushions 

.

  <rule name="cushions"> 
       <match url="^homeware/cushions" /> 
       <action type="Rewrite" url="productlist.asp?CategoryID=2" /> 
      </rule> 

ok, maintenant mon problème est avec des résultats pagination, de sorte que le domaine d'origine lorsque l'utilisateur passe sur la page suivante ressemblerait à ceci:

www.mydomain.com/productlist.asp?CategoryID=2&Page=2 

C'est là que je vais avoir des problèmes - Je veux que cela devienne:

www.mydomain.com/homeware/cushions?page=2 

et en cours pour combien de pages ne peuvent tout simplement pas faire fonctionner - Je comprends que je dois utiliser la chaîne de requête, mais vraiment du mal. Demander une expertise, merci pour toute aide

Répondre

1

Pour capturer la chaîne de requête, vous devez utiliser les conditions pour que, depuis l'URL de correspondance ne comprend pas. Ainsi, vous pouvez le faire avec une règle comme:

<rule name="cushions" stopProcessing="true"> 
<match url="^homeware/cushions$" /> 
<conditions> 
    <add input="{QUERY_STRING}" pattern="page=(\d+)" /> 
</conditions> 
<action type="Rewrite" url="productlist.asp?CategoryID=2&amp;page={C:1}" appendQueryString="false" /> 

0

Ajoutez juste appendQueryString = "true" dans l'action ajoutera automatiquement la chaîne de requête.

<rewrite> 
     <rules> 
      <rule name="test"> 
       <match url="^homeware/cushions" /> 
       <action type="Rewrite" url="/test/test.cfm?category=5" appendQueryString="true" /> 
       <conditions> 
       </conditions> 
      </rule> 
     </rules> 
    </rewrite> 

http://localhost:8081/homeware/cushions?page=2 Vous recevrez la page dans la variable URL avec la valeur 2.