2017-10-04 4 views
0

express-urlrewrite을 사용하여 하위 폴더를 효과적으로 '제거'하는 방법을 알아낼 수 없습니다.노드 express-urlrewrite로 하위 폴더를 다시 쓰는 방법은 무엇입니까?

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

:

/en//

/en/home 지금까지 /home

내 시도가되어야 될한다 : 예를 들어

어떻게 en 또는 es 하위 폴더를 다시 작성해야합니까?

+0

[문자 클래스 (https://www.regular-expressions.info/charclass.html) '[]'특별한 의미를 지니고있다. '[*]'는 별과 일치합니다. 틀림없이 당신이 염두에 두었던 것이 아닙니다. – Tomalak

답변

0

정규 정규식입니다. app.use 외부에서 테스트하십시오.

작업이 " 문자열의 시작 부분에서 /en 또는 /es을 제거하십시오.

문자열의 처음에 /en 또는 /es과 일치하는 정규식을 작성해 보겠습니다. /home/bla에서

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

결과 : 잘못된 반응을 방지하기 위해 (같은 /energy), 어떤이 중 하나 / 또는 ? 경우의가 있는지 다음 문자를 만들어 보자.

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