2008-10-20 14 views
1

J'utilise l'UrlRewriter d'Intelligencia dans mon application et j'ai un problème lorsque les règles que j'ai installées semblent supprimer le symbole + de mon URL.Comment arrêter UrlRewriter de supprimer mes symboles +

Par exemple, je veux avoir les urls /category/catname/+tag+tag, mais il me semble que /category/catname/ tag tag

Est-ce que quelqu'un a des idées et est cela à mon expression régulière? Je l'ai essayé dans le régulateur et ça correspond bien.

<rewriter> 
    <rewrite url="^/content/(.+)$" to="~/page.aspx?name=$1" /> 
    <rewrite url="^/category/(.+)$" to="~/catalog.aspx?category=$1" /> 
    <rewrite url="^/product/(.+)$" to="~/catalog.aspx?product=$1" /> 
    <rewrite url="~/login/" to="~/login.aspx"/> 
</rewriter> 

Répondre

5

La raison pour laquelle il fait cela, est parce que le « + » obtient analysé comme un espace par le serveur Web avant rewriter réellement obtenir. Un litteral + est quelque chose que vous ne pouvez pas utiliser dans une URL réelle. Si vous voulez utiliser un + alors vous devez le référencer comme quelque chose comme% 2B: "/ category/catname /% 2Btag1% 2Btag2".

Editer: Here is an example of URL encoding Cela illustre quelques-uns des caractères que vous ne pouvez pas utiliser, et comment les coder. Si vous cherchez plus de caractères attrayants visuels pour une URL, vous pouvez essayer "-" et "_" qui sont tous les deux valides, je suggérerais le "-". un exemple de l'URL serait alors "/ category/catname/-tag1-tag2".

+0

Clou sur la tête! – mspmsp

+0

Merci pour la réponse stephen, j'utilise - pour couvrir les espaces dans les noms de catégories, donc j'y penserai. Mais encourage la réponse. – dnolan