0
使用express-urlrewrite
,我无法弄清楚如何重写一个子文件夹来有效地“删除”它。如何用节点express-urlrewrite重写子文件夹?
例如:
/en/
应该成为/
/en/home
应该成为/home
我迄今为止尝试:
app.use(rewrite(/^\/(en|es)\/[*]/, '/$1'));
我将如何去重写任何en或es子文件夹?
使用express-urlrewrite
,我无法弄清楚如何重写一个子文件夹来有效地“删除”它。如何用节点express-urlrewrite重写子文件夹?
例如:
/en/
应该成为/
/en/home
应该成为/home
我迄今为止尝试:
app.use(rewrite(/^\/(en|es)\/[*]/, '/$1'));
我将如何去重写任何en或es子文件夹?
这是一个普通的正则表达式,只是在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
[字符类(https://www.regular-expressions.info/charclass.html) '[]'有特殊的语义。 '[*]'匹配一个明星,当然不是你想到的。 – Tomalak