다음과 같이 Express Router를 코드로 사용합니다.노드 JS Express 라우팅이 처리되지 않음/올바르게 처리되지 않음
첫 번째 정의는 올바른 localhost : 3000/tests를 허용합니다. 첫 번째 정의는 localhost : 3000/tests /를 허용하며 이는 틀린 것 같습니다.
두 번째 URL이 여기에 허용되면 잘못된 상대 URL (예 : 두 번째 URL을 수락 할 때/hello가 아닌/tests/hello가 됨)을 생성하는 HTML이 생성됩니다. 왜 이런 일이 일어나는 걸까요? 후행하는 슬래시가있는 URL이 일치하지 않도록하려면 어떻게해야합니까? 양쪽 모두를 받아 들여야 만한다면 상대 URL을 어떻게 생성 할 것인가? 내가 볼
//tests.js:
const router = express.Router();
// accepts /tests AND /tests/
router.get('/', function(req, res, next) {
});
// accepts /tests/new AND /tests/new/
router.get('/new', function(req, res, next) {
});
//app.js
var tests = require('./routes/tests');
app.use('/tests', tests);
모든 Node.js를 예제 코드는 내가 잘못 가고 어디 잘 모르겠어요 그래서 "/"와 "/ foo는"같은 경로를 사용합니다.
추가 편집 :
수신 URL을 만들 때 생성됩니다. 경로 처리기가/tests 및/tests /를 모두 허용하면 마지막 슬래시가 콘크리트 경로 형성에 큰 영향을주기 때문에 빌드 된 상대 URL은 다른 경로로 해석됩니다. 나는 전개 된 환경에서이 애플리케이션이 proxys를 사용하는 아파치에 의해 전달되므로 노드 페이지의 전체 URL은 example.com/myapp/tests와 같은 컨텍스트를 갖는다 고 덧붙여 야한다. 내 devleopment 환경의 경로가 다를 수 있습니다 (예 : localhost : 3000/tests)
두 곳에서 상대 URL을 사용합니다.
경로 처리기에서 res.redirect ("foo")를 수행 할 수 있습니다. 따라서 수신 URL이 이고 example.com/myapp/tests/ 인 경우 example.com/myapp/tests/foo라는 URL로 리디렉션됩니다. 들어오는 URL이 example.com/myapp/tests 인 경우 example.com/myapp/foo로 리디렉션됩니다. 나는 첫 번째가 아니라 두 번째 것을 원한다.
내가 생성 (EJS로 렌더링) 한 HTML 페이지에는 CSS와 HTML 폼, 링크, 버튼이 포함되어 있습니다. 그래서 CSS 같은 것을 포함 들어오는 URL에 후행가
링크 HREF = "스타일 시트/my.css"확인해 = "스타일 시트">
이런 것들에 대한 경로를 슬래시 경우 잘못 해결 모든 현재 페이지를 기준으로 하지만 브라우저의 위치 상자에 example.com/myapp/tests/ 과 같은 페이지가 표시되는 경우 example.com/myapp/tests 인 경우와 다른 URL이 표시됩니다. 전자의 경우 CSS는 /stylesheets/my.css가 아닌 /tests/stylessheets/my.css에서 찾고 있기 때문에 찾을 수 없습니다. 마찬가지로이 상대 URL은 다른 두 개의 수신 URL로이 페이지를 효과적으로 생성 할 수 있기 때문에 다르게 해결됩니다.
내 응용 프로그램에서 '/ tests/hello'와 같은 절대 경로를 사용하면 아무런 문제없이 상대 경로가 필요합니까? 상대 경로에 문제가있는 곳을 보여줄 수 있습니까? – Molda