Я столкнулся с безумно противоречивой проблемой с Express в приложении Node, из-за которой я не могу правильно перемещаться по встроенному рендерингу каталогов из-за перезаписи URL.Объяснить это проще с помощью кода:
var express = require('express');
var app = express.createServer();
app.use("/public", express.static("/web/content"));
app.use("/public", express.directory("/web/content"));
app.listen(8888);
При использовании сервера Uber-Simple Express над содержимым /web/content
отображаются в виде списка ссылок при переходе к localhost:8888/public
.Так, например:
..
index.html
header.jpg
js (folder)
css (folder)
Оттуда, если я нажму index.html
или header.jpg
, они будут отображаться правильно, но при нажатии на любую из этих папок будет (например) localhost:8888/js
, даже еслиссылка явно ведет к localhost:8888/public/js
.При дальнейшей проверке выясняется, что запрос отправляется по правильному пути (/public/js
), но сервер возвращает ответ 301 - Moved Permanently
, который затем перенаправляет браузер на /js
, который переходит к отображению страницы с ошибкой, поскольку содержимоене может быть найден.(Нет, правда?)
Попытки запросить определенный файл под этими папками (т.е.: localhost:8888/public/js/main.js
) работают нормально и не имеют такой же проблемы.
Сводит с ума то, что этонекоторое время делал это на моем устройстве разработки, а потом просто ... остановился.Не уверен почему.Однако при попытке развертывания на рабочем сервере возникла та же проблема, хотя я больше не могу воспроизвести ее в своей среде разработки.Кто-нибудь знает, почему Express, похоже, так сильно хочет переписать мои URL-адреса с ошибками?