2014-09-15 2 views
1

У меня проблема с относительными ссылками в экспресс. Похоже, что они работают на двух уровнях, а затем останавливаются.Предоставление привязных ссылок в Express

Я попытаюсь проиллюстрировать вопрос, который у меня есть.

Просмотр страницы @http://example.com -> click anchor with href="level-1". Это работает как ожидается, и ссылки на http://example.com/level-1.

Просмотр страницы @http://example.com/level-1 -> click anchor with href="level-2". Работает так, как ожидалось, и ссылки на http://example.com/level-1/level-2.

Просмотр страницы @http://example.com/level-1/level-2 -> click anchor with href="level-3". Это делает NOT работает как ожидалось и ссылается на http://example.com/level-1/level-3. я могу получить доступ http://example.com/level-1/level-2/level-3 с помощью href="level-2/level-3"

Я думал, что это может быть путь организованы мои маршруты, но независимо от того, что я делаю для них поведение, кажется, то же самое.

В настоящее время у меня есть что-то вроде

main.js

... 

var app = express(); 

var routes = require('./router')(app); 

маршрутизатор/index.js

module.exports = function(app) { 
    app.use('/level-1', require('./routes/level-1')); 
    app.use('/', require('./routes/home')); 
}; 

маршрутизатор/маршруты/уровень 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; 

маршрутизатор/маршруты/уровня 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; 

маршрутизатор/маршруты/уровня 3.js

var express = require('express'); 
var router = express.Router(); 

router.get('/', function(req, res) { 
    res.render('level-3'); 
}); 
module.exports = router; 

Надеюсь, я предоставил достаточно информации.

+0

Что-нибудь в [этом вопросе] (http://stackoverflow.com/questions/5559578/having-links-relative-to-root) уместно? Думал, что я сначала проведу это, прежде чем спекулировать. :) –

+0

Спасибо, что ответили. Хотелось бы! Я понимаю, как работают ссылки. Это выражает «обращение с ними, что я немного туманный. –

+0

Извините, ответили перед тем, как закончить мой комментарий ... В корневом URL-адресе они работают точно так, как я ожидал, также на страницах уровня 1 они работают точно так, как я ожидаю. IE при связывании, например href = "page", страница будет добавлена ​​к текущему URL-адресу. Глубоко, чем уровень один, и это останавливается. –

ответ

0

Я понял ответ на свою проблему. Мне пришлось добавить конечный / к привязным ссылкам, ведущим к проблемным страницам.

Что меня бросило, и причина, по которой она работала до уровня одного уровня, заключалась в том, что первый уровень страниц доступен из панели навигации и что ссылки на них все в стиле href="/level-1/", ссылки с этого момента генерируются и не генерируются с завершающей косой чертой, поэтому href="level-2".

Смежные вопросы