Я использую промежуточное ПО для исправления запросов URL, которые не имеют косой черты в конце.Если последний символ пути не является /
или имеет путь /js/
, /stylesheets/
, /images/
или sitemap.xml
, то не добавляйте /
в конец пути.Это работало в большинстве случаев, но по какой-то причине путь возвращает /images/footer-logo.png/
для изображения, которое у меня есть, но не имеет косой черты для /images/header_logo.svg
.Это поставило меня в тупик, потому что они оба содержат один и тот же каталог, но один отображается правильно, а другой нет.Что может быть не так в моем промежуточном программном обеспечении, которое управляет этим поведением?Причина, по которой /images/
равен от === до 0, заключается в том, что console.log показывает этот путь как отличающийся от других, имеющих -1.Не уверен, почему это так.
Промежуточное программное обеспечение:
//Add trailing slash to url
router.use(function(req, res, next) {
//Check for GET or HEAD request
var method = req.method.toLowerCase();
console.log(req.path)
console.log(req.path.indexOf('/images/'))
//If request is GET | HEAD and last path value is not '/' and path length is greater than 1 and path does not match js | css | images
if (['get', 'head'].includes(method) && req.path.substr(-1) != '/' && req.path.length > 1 && req.path.indexOf('/js/') === -1 && req.path.indexOf('/stylesheets/') === -1 && req.path.indexOf('/images/') === 0 && req.path.indexOf('/sitemap.xml') === -1) {
console.log("modify path")
console.log(req.path)
var query = req.url.slice(req.path.length);
res.redirect(301, req.path + '/' + query);
} else {
next();
}
});
.png Пример кода:
<!-- Logo -->
<a class="d-inline-flex align-items-center mb-3" href="/">
<img src="/images/footer-logo.png" alt="Footer Logo">
</a>
<!-- End Logo -->