我正在使用 Nginx njs 模块进行一些 url 修改。
我的用例是返回给定 uri 的重定向 uri。
URI 将如下所示:
/books
/books/economic-genious
/books/flight-mechanics
我的正则表达式匹配上述 URI 如下 -
/books/(.*)|/books$
表达式的第一部分/books/(.*)
是匹配以下 URI:
/books/economic-genious
/books/flight-mechanics
表达式的第二部分/books$
是匹配以下 URI:
/books
我的目的地配置如下/ebooks/$1
:这样上面的 URI 将被转换为:
/ebooks
/ebooks/economic-genious
/ebooks/flight-mechanics
Javascript代码:
function getMappedURI(uri) {
var exp = new RegExp('/books/(.*)|/books$');
var destUri = '/ebooks/$1';
var redirectUri = uri.replace(exp, destUri);
return redirectUri;
}
上面的代码适用于以下 URI:
/books/economic-genious
/books/flight-mechanics
但对于 URI /books
,它应该返回/ebooks/
。但它在 . 末尾附加了一些不可打印的特殊字符/ebooks/
。
我认为它正在尝试$1
用一些特殊字符替换。
如何避免在最后添加特殊字符?