我不知道如何表达它(这就是为什么谷歌无法帮助我...)所以让我举个例子。
如果我转到我的页面mypage.whatever/login,一切都很好。
但如果我转到mypage.whatever/login/,页面就没有样式。它只有HTML。
在我的主节点/快递文件中,我有app.use("/login", login);
在login.js文件中我有:
router.get("/", function(req,res){
res.render("login", {title: "Login page"});
});
我怎样才能纠正这种行为?
提前致谢。
编辑:
感谢Manasov Daniel和jfriend00,我找到了问题的来源。
当我添加“/”时,不包括样式表,因为路线搞砸了。
例如使用像这样的样式表
<link rel="stylesheet" href="stylesheets/login.css">
而不是寻找something/stylesheets/login.css
浏览器会搜索something/login/stylesheets/login.css
你们有没有想法如何解决它?
答案 0 :(得分:2)
当你的样式表包含在这样的路径中时:
<link rel="stylesheet" href="stylesheets/login.css">
然后,浏览器将它们视为相对路径,并相对于当前页面的路径进行评估。这很少是你想要的共享资源,所以你应该改为使用这样的前导斜杠:
<link rel="stylesheet" href="/stylesheets/login.css">
当你没有尾随斜杠时,它的工作方式不同是因为当没有尾部斜杠时,/login
被视为文件名,而/
是路径。因此,stylesheets/login.css
将与/
结合使用,结果将为/stylesheets/login.css
,并且可以正常使用。
但是,如果您使用/login/
,那么将其视为路径,并将该路径与您的样式表链接结合使用,以便为/login/stylesheets/login.css
提供无法使用的功能。
答案是始终在样式表链接中包含根路径(例如以/
开头的内容)。然后,它们将不会与页面的路径组合,只与页面的域和端口组合。
答案 1 :(得分:0)
在主节点/快递文件中,您有:
app.use('/login', require('./your_file_path/login')); // login.js file path
在login.js文件中,您应该:
router.get("/login", function(req,res){
res.render("login", {title: "Login page"});
});
答案 2 :(得分:0)
回答编辑部分:
在我的css路线上添加一个预斜线修复了问题。
即从href =“something / myfile.css”到href =“/ something / myfile.css”
我真的不明白为什么。