Express.js - 使用路由参数时如何处理404页面
Express.js - How to handle 404 pages when using route parameters
当我还尝试使用 动态参数 捕获 url 时如何处理 404 页面?即,/:id
下面的代码永远不会达到 404 的最后一条规则,Express 总是尝试打开 html
文件,即使它们不存在。
const express = require('express');
const app = express();
app.use(express.static(__dirname + '/dev'));
app.get('/', function(req, res) {
res.sendFile(`${__dirname}/dev/index.html`);
});
app.get('/:id', function(req, res) {
res.sendFile(`${__dirname}/dev/pages/${req.params.id}.html`);
});
app.get('*', function(req, res) {
res.status(404).sendFile(`${__dirname}/dev/404.html`);
});
app.listen(3000, function() {
console.log('Express server started http://localhost:3000');
});
您的代码永远不会达到 404 规则。您需要从动态路由本身处理 404 错误。
由于您在根路径之后定义了动态参数,因此之后的路径将进入该路由并且永远不会达到 404 规则。
当我还尝试使用 动态参数 捕获 url 时如何处理 404 页面?即,/:id
下面的代码永远不会达到 404 的最后一条规则,Express 总是尝试打开 html
文件,即使它们不存在。
const express = require('express');
const app = express();
app.use(express.static(__dirname + '/dev'));
app.get('/', function(req, res) {
res.sendFile(`${__dirname}/dev/index.html`);
});
app.get('/:id', function(req, res) {
res.sendFile(`${__dirname}/dev/pages/${req.params.id}.html`);
});
app.get('*', function(req, res) {
res.status(404).sendFile(`${__dirname}/dev/404.html`);
});
app.listen(3000, function() {
console.log('Express server started http://localhost:3000');
});
您的代码永远不会达到 404 规则。您需要从动态路由本身处理 404 错误。 由于您在根路径之后定义了动态参数,因此之后的路径将进入该路由并且永远不会达到 404 规则。