2011-12-29 3 views
0

J'ai une carte que j'utilise pour réécrire les URL dans mon application asp.net MVC. Je voudrais que cette règle soit conditionnelle à la présence de la valeur de recherche dans la carte.Comment utiliser réécriture avec une recherche dans une carte

RewriteMap contentmap txt:content/maps/contentmap.txt [NC] 
RewriteRule home/([^/]*)$ /home/${contentmap:$1}/$1 [NC,L] 

cela prend l'url home/some-content-id Récrit comme home/someaction/some-content-id

Le problème que je suis en cours d'exécution en est parfois le modèle home/some-other-content-id peut ne pas correspondre à la carte de contenu. C'est ok mais la règle essaie toujours (ou apparemment) de réécrire quand ce serait mieux si ce n'était pas le cas.

Ma première pensée est de mettre une réécriture au-dessus de la règle, mais comment faites-vous la recherche?

Répondre

1

Avez-vous essayé:

RewriteMap contentmap txt:content/maps/contentmap.txt [NC] 
RewriteCond ${contentmap:$1} >"" [NC] 
RewriteRule home/([^/]*)$ /home/${contentmap:$1}/$1 [NC,L] 

Signification si ${contentmap:$1} résultats en quoi que ce soit plus grand qu'une chaîne vide (« »), puis continuer à la règle.

+0

Merci, cela a fonctionné bien et m'a donné une idée pour la junk eurl.axd dans la manipulation de désagréable url IIS6 sans extension. – jason

1

S'il vous plaît essayez la syntaxe suivante:

RewriteMap contentmap txt:content/maps/contentmap.txt [NC] 
RewriteCond ${contentmap:$1|NOT_FOUND} !NOT_FOUND 
RewriteRule home/([^/]*)$ /home/${contentmap:$1}/$1 [NC,L] 
Questions connexes