我花了整整6天的时间将仅HTML5应用程序转换为Angular 4路由应用程序。只是能够使用Angular 4路由使网站更加友好。
成功开发它后,我将其部署在服务器上,只是为了意识到直接URL导致404页。示例:http://abc .com/route
同样的事情在RouterLinks的点击上正常工作。我已经看到了有关此问题的几篇博客文章,但是我无法决定哪个是最快的解决方案。有人可以帮我吗?我不使用Angular CLI,请注意。
这是因为所有路由都必须转到index.html和Angular-Router从那里进行路由。因此,将节点服务器启动并运行,然后将所有请求重定向到index.html
这就是您的服务器的外观
import { json, urlencoded } from "body-parser";
import * as compression from "compression";
import * as express from "express";
import * as path from "path";
const app: express.Application = express();
app.disable("x-powered-by");
app.use(json());
app.use(compression());
app.use(urlencoded({ extended: true }));
if (app.get("env") === "production") {
// in production mode run application from dist folder
app.use(express.static(path.join(__dirname, "/../client")));
}
app.use('*', (req, res) => {
res.sendFile(path.join(__dirname, '/../client/index.html'));
});
// catch 404 and forward to error handler
app.use((req: express.Request, res: express.Response, next) => {
const err = new Error("Not Found");
next(err);
});
// production error handler
// no stacktrace leaked to user
app.use((err: any, req: express.Request, res: express.Response, next: express.NextFunction) => {
res.status(err.status || 500);
res.json({
error: {},
message: err.message,
});
});
export { app };
您可以克隆此项目,然后用您的Angular应用