2016-05-03 2 views
2

Я подаю страницу 404 с курьерским:Относительные пути для 404 страницы служил Экспресс

server.use(function(req, res, next) { 
    res.status(404).sendFile('404.html', { root: __dirname + BASE }) 
}) 

404.html находится в корневом каталоге веб-сайта, и все работает безупречно, если я пытаюсь открыть не- существующая страница на корне (http://mywebsite.com/asd).

Проблема в том, что я пытаюсь открыть страницу внутри других папок (http://mywebsite.com/asd/asd). Пути для моего css и js не соблюдаются: <link href="dist/bundle.min.css" rel="stylesheet">

Как решить этот путь, связанный проблема? И безопасно ли обслуживать страницу с sendFile на производственном сервере?

+1

Я бы сказал, что пути уважаются, они просто неверны. – robertklep

ответ

2

Я считаю, что вам нужно forwardslash перед вашим href ссылка:

<link href="/dist/bundle.min.css" rel="stylesheet"> 

Как / интерпретируется как корень хоста:

  • dist/bundle.min.css является относительно траектории.
  • /dist/bundle.min.css относится к корню.

Редактировать: справа. Если вы укажете базу, то корень будет установлен на эту базу. :)

+0

Похоже, что '/ dist' пытается найти файлы в корне проекта (папку, где я храню gulpfile.js и package.json) при запуске приложения в режиме localhost! – Luke

+0

Он должен разрешить 'http: // mywebsite.com/dist/bundle.min.css' или' localhost: port/dist/bundle.min.css'. Первый forwardlash означает, что он основан на корне. См .: http://stackoverflow.com/a/21828923/5812121 http://stackoverflow.com/a/10659501/5812121 – timolawl

+1

Ваш ответ правильный, спасибо! Моя ошибка также объявила BASE о том, чтобы развернуть сервер! '' 'server.use (BASE, express.static (__ dirname + BASE, { расширений: ['html'] }))' '' – Luke

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