经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » HTML5 » 查看文章
angular 前端路由不生效解决方案
来源:cnblogs  作者:WeihanLi  时间:2019/6/28 12:28:27  对本文有异议

angular 前端路由不生效解决方案

Intro

最近使用 Angular 为我的活动室预约项目开发一个前后端分离的客户端,在部署上遇到了一个问题,前端路由不生效,这里记录一下。本地开发正常,但是部署到服务器上就有问题,之前部署到IIS上时需要配置一个 url rewrite ,可能遇到了类似的问题,查阅一番之后确实是这样。

启用前端路由服务器配置

没有一种配置可以适用于所有服务器。 后面这些部分会描述对常见服务器的配置方式。 这个列表虽然不够详尽,但可以为你提供一个良好的起点。

  1. RewriteEngine On
  2. # If an existing asset or directory is requested go to it as it is
  3. RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
  4. RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
  5. RewriteRule ^ - [L]
  6. # If the requested resource doesn't exist, use index.html
  7. RewriteRule ^ /index.html
  1. try_files $uri $uri/ /index.html;
  • IIS:往?web.config?中添加一条重写规则,类似于这里
  1. <system.webServer>
  2. <rewrite>
  3. <rules>
  4. <rule name="Angular Routes" stopProcessing="true">
  5. <match url=".*" />
  6. <conditions logicalGrouping="MatchAll">
  7. <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
  8. <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
  9. </conditions>
  10. <action type="Rewrite" url="/index.html" />
  11. </rule>
  12. </rules>
  13. </rewrite>
  14. </system.webServer>
  1. "rewrites": [ {
  2. "source": "**",
  3. "destination": "/index.html"
  4. } ]

Docker 部署

我使用了 Docker 部署,最后部署在 nginx 下了,按上面的提示在 nginx 配置中配置 try file,修改 nginx 默认配置文件如下:

  1. server {
  2. listen 80;
  3. server_name localhost;
  4. location / {
  5. root /usr/share/nginx/html;
  6. index index.html index.htm;
  7. try_files $uri $uri/ /index.html;
  8. }
  9. #error_page 404 /404.html;
  10. # redirect server error pages to the static page /50x.html
  11. error_page 500 502 503 504 /50x.html;
  12. location = /50x.html {
  13. root /usr/share/nginx/html;
  14. }
  15. }

在打包 docker 镜像时替换默认的 nginx 配置,Dockerfile 如下所示:

  1. FROM node:12-alpine AS builder
  2. # set working directory
  3. WORKDIR /app
  4. # install and cache app dependencies
  5. COPY package.json .
  6. RUN npm install
  7. # build the angular app
  8. COPY . .
  9. RUN npm run build
  10. FROM nginx:alpine
  11. # copy from dist to nginx root dir
  12. COPY --from=builder /app/dist/ReservationClient /usr/share/nginx/html
  13. # expose port 80
  14. EXPOSE 80
  15. # set author info
  16. LABEL maintainer="WeihanLi"
  17. COPY ./conf/nginx.default.conf /etc/nginx/conf.d/default.conf
  18. # run nginx in foreground
  19. # https://stackoverflow.com/questions/18861300/how-to-run-nginx-within-a-docker-container-without-halting
  20. CMD ["nginx", "-g", "daemon off;"]

按上面的 Dockerfile 打包之后前端路由就可以正常使用了~~

我的 angular 做的活动室预约客户端体验地址:https://reservation-preview.weihanli.xyz/

Reference

原文链接:http://www.cnblogs.com/weihanli/p/fix-angular-frond-end-route.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号