2013-01-02 2 views
6

Express.js의 기본 블로그를 작성하고 있습니다. 나는이 같은 경로 구조를 가지고 말 :Express.js에서 다른 경로의 별칭으로 경로를 사용하십시오.

/blog/page/:page 

을 나는 것 또한 본질적으로 /blog/page/1의 별칭 인 /blog 경로있다. Express에서 쉽게 처리하려면 어떻게해야합니까?

모든 경로는 다음과 같이 정의된다 :

app.get('/path', function(req, res) { 
    //logic 
}); 

답변

13

사용 res.redirect/blog/page/1로 리디렉션 브라우저에게 :

app.get('/blog', function(req, res) { 
    res.redirect('/blog/page/1'); 
}); 

app.get('/blog/page/:page', function(req, res) { 
    //logic 
}); 

사용을 1 페이지에 공유 경로 처리기 및 기본 page PARAM이 경우를 전달되지 않음 :

function blogPageHandler(req, res) { 
    var page = req.params.page || 1; 
    //logic 
} 

// Define separate routes 
app.get('/blog/page/:page', blogPageHandler); 
app.get('/', blogPage); 

// or combined, by passing an array 
app.get(['/', '/blog/page/:page'], blogPageHandler); 

// or using optional regex matching (this is not recommended) 
app.get('/:_(blog/)?:_(page/)?:page([0-9]+)?', blogPageHandler); 
+7

이렇게하면 브라우저의 URL. 대신 connect-modrewrite를 사용하여 URL을 다시 작성할 수 있습니다. https://github.com/tinganho/connect-modrewrite?source=c – einstein

+1

@einstein을 수정하십시오. 그러나 고속 노선을 사용할 때는 필요하지 않습니다. 정규식을 사용하여 배열을 일치 시키거나 배열을 전달할 수도 있습니다. 다음을 참조하십시오. http://stackoverflow.com/questions/15350025/express-js-single-routing-handler-for-multiple-routes-in-a-single- 라인 – TMPilot

+2

downvoted 이것은 다른 왕복이 필요합니다. 좋은 해결책은 아닙니다. –

관련 문제