I have an issue with relative links in express. They appear to be working up to two levels deep and then they stop.
I'll attempt to illustrate the issue I am having.
Viewing page @ http://example.com
-> click anchor with href="level-1"
. This works as expected and links to http://example.com/level-1
.
Viewing page @ http://example.com/level-1
-> click anchor with href="level-2"
.
This works as expected and links to http://example.com/level-1/level-2
.
Viewing page @ http://example.com/level-1/level-2
-> click anchor with href="level-3"
. This does NOT work as expected and links to http://example.com/level-1/level-3
.
I can access http://example.com/level-1/level-2/level-3
using href="level-2/level-3"
I thought it might be the way my routes are organised but no matter what I do to them the behaviour seems to be the same.
Currently I have something like
main.js
...
var app = express();
var routes = require('./router')(app);
router/index.js
module.exports = function(app) {
app.use('/level-1', require('./routes/level-1'));
app.use('/', require('./routes/home'));
};
router/routes/level-1.js
var express = require('express');
var router = express.Router();
router.use('/level-2', require('./level-2'));
router.get('/', function(req, res) {
res.render('level-1');
});
module.exports = router;
router/routes/level-2.js
var express = require('express');
var router = express.Router();
router.use('/level-3', require('./level-3'));
router.get('/', function(req, res) {
res.render('level-2');
});
module.exports = router;
router/routes/level-3.js
var express = require('express');
var router = express.Router();
router.get('/', function(req, res) {
res.render('level-3');
});
module.exports = router;
Hopefully I have provided enough information.