2015-12-21 2 views
1

Я использую рамки Node.js и Express для разработки веб-сайта. Я столкнулся с странным неправильным поведением с помощью URL-адреса. Когда я нажимаю на ссылку url ссылки, url становится «localhost: 3000/images /» - в конце добавляется косая черта, как вы можете видеть. Но когда я меняю все «образы» на «img», иначе url становится «localhost: 3000/img». Почему маршрутизатор ведет себя так? Коды, написанные ниже. (Я использую Jade шаблон Engine)Экспресс добавляет косую черту в конце URL-адреса странно

//bar.jade  
li.nav-item 
     a.nav-link(href='images') 
     i.icon-camera 
     | Images 

//end of bar.jade 


//images.js (router) 
var express = require('express'); 
var router = express.Router(); 

/* GET home page. */ 

router.get('/', function(req, res, next) { 
    res.render('images', { title: 'Express'}); 
}); 

module.exports = router; 
//end of router .js 



//app.js 
var images =require('./routes/images'); 
........ 
........ 
app.use('/images',images); 
//end of app.js 
+0

Попробуйте запустить браузер в режиме инкогнито/в приватном режиме, чтобы узнать, все ли это происходит. Также проверьте инструменты разработчика вашего браузера, чтобы узнать, что происходит в точности. – robertklep

+0

Он ведет себя одинаково в частном режиме и в других браузерах. Я проверил html, и это выглядит нормально. Я не использовал инструменты для работы с браузером. Как вы думаете, что я должен проверить? – Emre

+0

В частности, исходный ответ сервера при загрузке '/ images' (независимо от того, возвращает ли сервер статус 301/302). – robertklep

ответ

4

Я думаю, я знаю, что происходит: вы также используя express.static() промежуточное программное обеспечение, а также в общедоступном каталоге, у вас есть каталог с именем images/.

Это промежуточное программное обеспечение будет генерировать перенаправления, заканчивающиеся косой чертой, когда вы попытаетесь запросить URL-адрес, соответствующий общедоступному каталогу (даже если этот каталог пуст или совпадает с другим маршрутом).

Для того чтобы отключить это поведение, установите redirect option в false.

+0

Вы правы. Я удалил папку с изображениями, и она не перенаправлялась. Я впечатлен. – Emre

+2

@Emre показывает, что вы предоставляете _all_ информацию при задании вопросов; D – robertklep

0

По умолчанию в маршрутизаторе экспресс «/ Foo» и «/ Foo /» обрабатываются так же маршрутизатором. Вы можете отключить это поведение с помощью опции strict: true.

Express.Router documentation

var router = express.Router({strict: true}); 
+0

У них одинаковые отношения, но из вопроса, похоже, есть перенаправление от '/ images' до'/images/', что не является чем-то, что делает Express. – robertklep

+0

Да, @robertklep прав. Я пробовал разные слова по одному и тому же коду, но только слово «images», Express перенаправляет. – Emre

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