2017-10-04 1 views
0

En utilisant express-urlrewrite, je n'arrive pas à comprendre comment réécrire un sous-dossier pour le 'supprimer' efficacement.Comment réécrire le sous-dossier avec le noeud express-urlrewrite?

Par exemple:

/en/ devrait devenir /

/en/home devrait devenir /home

Ma tentative à ce jour:

app.use(rewrite(/^\/(en|es)\/[*]/, '/$1')); 

Comment pourrais-je réécrire n'importe quel sous-dossier?

+0

[Les classes de caractères] (https://www.regular-expressions.info/charclass.html) '[]' ont une sémantique spéciale. '[*]' correspond à une étoile, sûrement pas ce que vous aviez en tête. – Tomalak

Répondre

0

Il s'agit d'une regex régulière, il suffit de tester en dehors de app.use.

La tâche est "supprimer /en ou /es depuis le début de la chaîne" ".

Alors écrivons une regex qui correspond à /en ou /es au début de la chaîne. Pour éviter les faux positifs (comme /energy), faisons en sorte que le caractère suivant, le cas échéant, est soit un / ou un ?:

"/en/home/bla".replace(/^\/(en|es)(?=[/?]|$)?/, '') 

résultats dans /home/bla.

app.use(rewrite(/^\/(en|es)(?=[/?]|$)?/, '')); 

panne Regex (je l'ai enlevé la regex spécifique littérale échapper):

^    # start of string 
/    # a forward slash 
(    # group 1 
    en|es   # "en" or "es" 
)    # end group 1 
(?=    # look-ahead 
    [/?]   # one of forward slash, question mark 
    |    # or 
    $    # end of string 
)    # end look-ahead