2017-10-04 26 views
0

使用express-urlrewrite,我无法弄清楚如何重写一个子文件夹来有效地“删除”它。如何用节点express-urlrewrite重写子文件夹?

例如:

/en/应该成为/

/en/home应该成为/home

我迄今为止尝试:

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

我将如何去重写任何en或es子文件夹?

+0

[字符类(https://www.regular-expressions.info/charclass.html) '[]'有特殊的语义。 '[*]'匹配一个明星,当然不是你想到的。 – Tomalak

回答

0

这是一个普通的正则表达式,只是在app.use之外测试它。

任务是“从字符串”“开始删除/en/es

因此,让我们写一个匹配/en/es在字符串开头的正则表达式。为了避免误报(如/energy),让我们确保以下字符,如果有的话,要么是/?

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

结果/home/bla

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

正则表达式击穿(I已经删除了正则表达式字面特异性逸出):

^    # 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