Изменить на
<link rel="stylesheet" href="/style/not-found.css" >.
Требуется путь относительно каталога publi c, который express.static()
имеет в качестве root.
Но может u объясните мне, если href = "./ style / not-found. css", почему он работает правильно, когда пользователь вводит: "localhost: 3000/5", но не работает на "localhost: 3000 / products / 5" ( Я имею в виду загрузку css успешно)
Если ссылка на вашей странице HTML не начинается с http://
или с /
, то она считается относительной к пути ссылкой и браузером возьмет путь к странице и объединит его с URL-адресом в ссылке, чтобы создать полный URL-адрес перед отправкой на сервер. Итак, когда у вас есть это:
href="./style/not-found.css"
и URL страницы такой:
http://localhost:3000/products/something
Браузер в итоге запросит:
http://localhost:3000/products/style/not-found.css
И, ваш сервер не будет знать, что с этим делать. С другой стороны, когда вы меняете тег <style>
на этот:
href="/style/not-found.css"
Затем ваш URL начинается с /
, поэтому браузер добавляет к нему только домен и браузер запросит:
http://localhost:3000/style/not-found.css
, который будет работать.
Итак, когда вы используете путь вроде:
http://localhost: 3000/5
Тогда путь для этого просто /
, поэтому, когда вы объедините /
с ./style/not-found.css
, браузер в итоге запросит
http://localhost:3000/stye/not-found.css
, и он будет работать, потому что путь был root путь. Таким образом, это не работает для страниц, которые не находятся на верхнем уровне. Вот почему URL-адреса ваших ресурсов c всегда должны иметь абсолютный путь (начиная с /
), чтобы они не зависели от пути к странице хостинга.