深圳做外贸网站多少钱,2 网站建设的一般步骤包含哪些,如何制作网页设计首页,建设网站什么软件好data: 2024/6/22 16:05:34 周六 limou3434 叠甲#xff1a;以下文章主要是依靠我的实际编码学习中总结出来的经验之谈#xff0c;求逻辑自洽#xff0c;不能百分百保证正确#xff0c;有错误、未定义、不合适的内容请尽情指出#xff01; 文章目录 1.源头2.排错3.原因4.解…
data: 2024/6/22 16:05:34 周六 limou3434 叠甲以下文章主要是依靠我的实际编码学习中总结出来的经验之谈求逻辑自洽不能百分百保证正确有错误、未定义、不合适的内容请尽情指出 文章目录 1.源头2.排错3.原因4.解决 概要… 资料本文参考了 这份博文您可前去一看。 1.源头
在帮朋友部署和测试项目的时候遇到一个比较奇葩的问题页面可以成功访问但是刷新就返回 404。
2.排错
首先我是使用了 fiddler Classic 进行抓包我很快发现了刷新前和刷新后的 http 请求是完全不一样的这个时候我就察觉到他们做的应该是一个前后端分离的项目并且 404 错误返回是 Nginx 默认的返回页面而不是他们项目中自己设计的 404 页面如下是他们项目的 404 页面。 此时我就有一个推测这个很可能和他们的 Nginx 配置有关系…于是我打开了他们的 Nginx 配置他们使用的是宝塔部署不过您也可以直接查找 Linux 中的 Nginx 配置文件。
# 有问题的 Nginx 配置
server
{listen PORT; # 由于是朋友的项目还未公开就隐去了端口号, 统一使用 PORT 表示server_name IP; # 由于是朋友的项目还未公开就隐去了地址, 统一使用 IP 表示index index.php index.html index.htm default.php default.htm default.html;root /www/wwwroot/IP;# CERT-APPLY-CHECK--START# 用于 SSL 证书申请时的文件验证相关配置 -- 请勿删除include /www/server/panel/vhost/nginx/well-known/IP.conf;# CERT-APPLY-CHECK--END# SSL-START SSL相关配置请勿删除或修改下一行带注释的404规则# error_page 404/404.html;# SSL-END# ERROR-PAGE-START 错误页配置可以注释、删除或修改# error_page 404 /404.html;# error_page 502 /502.html;# ERROR-PAGE-END# PHP-INFO-START PHP 引用配置可以注释或修改include enable-php-00.conf;# PHP-INFO-END# REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效include /www/server/panel/vhost/rewrite/IP.conf;# REWRITE-END# 禁止访问的文件或目录location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md){return 404;}# 一键申请 SSL 证书验证目录相关设置location ~ \.well-known{allow all;}# 禁止在证书验证目录放入敏感文件if ( $uri ~ ^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$ ) {return 403;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires 30d;error_log /dev/null;access_log /dev/null;}location ~ .*\.(js|css)?${expires 12h;error_log /dev/null;access_log /dev/null;}access_log /www/wwwlogs/IP.log;error_log /www/wwwlogs/IP.error.log;
}嗯…果然只返回了 index 这个单体页面。
3.原因
在使用 Nginx 做反向代理服务器且部署了一些关于 Vue、Reactor 项目时有时会遇到页面成功返回但是在浏览器中刷新出现 404 的问题。我不是特别了解这些 js 库的使用但是我曾经做过一些 QML 文件的路由跳转机制这种跳转机制其实就是通过在一个 .qml 文件中进行路由配置来达到页面跳转的目的。
这在桌面客户端可能还没有什么问题但是在 Web 应用中使用了 Vue、Reactor 时由于前端开发者只开发了一个 index然后通过路由跳转来得到前后端分离的效果这其实就是一种 单页应用(SPA)。
因此如果用户在浏览器中请求网站时其实就是浏览器包装 url:port 做 http 请求的时候。而由于前后端分离后端代码只返回一个 index而其他页面的跳转交给前端来实现后端只需要专注于和前端约定好需要返回给页面什么样的数据即可。
但这样就会出现一个很尴尬的问题如果用户在浏览器中跳转到了该网站中的其他页面例如登录页面刷新浏览器时浏览器就会误认为用户请求的 url:port/login 在远端服务器中就会重新对 url 进行包装向远端服务器进行请求。
可这是单页应用服务器上只有一个 index因此必然是请求不到对应的资源返回的自然就是 404 了。
4.解决
想要解决这个问题只需要让 Nginx 在对找不到的路径上的资源时把用户的请求重定向到 index 中即可交给分离出来的前端代码进行处理就行了修改 Nginx 配置文件内容如下…
# 没问题的 Nginx 配置
server
{listen PORT; # 由于是朋友的项目还未公开就隐去了端口号, 统一使用 PORT 表示server_name IP; # 由于是朋友的项目还未公开就隐去了地址, 统一使用 IP 表示index index.php index.html index.htm default.php default.htm default.html;root /www/wwwroot/IP;#CERT-APPLY-CHECK--START# 用于SSL证书申请时的文件验证相关配置 -- 请勿删除include /www/server/panel/vhost/nginx/well-known/IP.conf;#CERT-APPLY-CHECK--END#SSL-START SSL相关配置请勿删除或修改下一行带注释的404规则#error_page 404/404.html;#SSL-END#ERROR-PAGE-START 错误页配置可以注释、删除或修改#error_page 404 /404.html;#error_page 502 /502.html;#ERROR-PAGE-END#PHP-INFO-START PHP 引用配置可以注释或修改include enable-php-00.conf;#PHP-INFO-END#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效include /www/server/panel/vhost/rewrite/IP.conf;#REWRITE-END#禁止访问的文件或目录location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md){return 404;}#一键申请SSL证书验证目录相关设置location ~ \.well-known{allow all;}#禁止在证书验证目录放入敏感文件if ( $uri ~ ^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$ ) {return 403;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires 30d;error_log /dev/null;access_log /dev/null;}location ~ .*\.(js|css)?${expires 12h;error_log /dev/null;access_log /dev/null;}### begin-2024-06-22-mod: 解决单页应用路由刷新 404 问题location / { # 该块匹配所有的请求try_files $uri $uri/ rewrites; # 尝试顺序查找文件和目录, 如果都失败则定义重写规则index index.html;}location rewrites {rewrite ^.*$ /index.html last; # 对正则模式 ^.*$ 进行匹配(匹配任意长度的字符串), 这一句就是重写规则, 把所有的请求重定向到 index.html 中(故就交给入口文件来处理), 这里的 last 是重写规则的选项之一, 主要作用是一旦完成重写规则, 就停止当前 location 中的请求处理, 把请求传递给下一阶段匹配的 location 块中...}### end: 修改后成功解决刷新和重写路由问题access_log /www/wwwlogs/IP.log;error_log /www/wwwlogs/IP.error.log;
}至此解决问题刷新页面也不会返回 Nginx 的 404 错误同时即便前端用户真的请求了错误的资源也只会返回项目中定义的 404 页面。 结语…
文章转载自: http://www.morning.ntzbr.cn.gov.cn.ntzbr.cn http://www.morning.kmqwp.cn.gov.cn.kmqwp.cn http://www.morning.dkfb.cn.gov.cn.dkfb.cn http://www.morning.xkyst.cn.gov.cn.xkyst.cn http://www.morning.przc.cn.gov.cn.przc.cn http://www.morning.pzqnj.cn.gov.cn.pzqnj.cn http://www.morning.rhfh.cn.gov.cn.rhfh.cn http://www.morning.tcxzn.cn.gov.cn.tcxzn.cn http://www.morning.pmsl.cn.gov.cn.pmsl.cn http://www.morning.kfbth.cn.gov.cn.kfbth.cn http://www.morning.xjqkh.cn.gov.cn.xjqkh.cn http://www.morning.lkpzx.cn.gov.cn.lkpzx.cn http://www.morning.hkchp.cn.gov.cn.hkchp.cn http://www.morning.rwtlj.cn.gov.cn.rwtlj.cn http://www.morning.tfwsk.cn.gov.cn.tfwsk.cn http://www.morning.mfqmk.cn.gov.cn.mfqmk.cn http://www.morning.nrrzw.cn.gov.cn.nrrzw.cn http://www.morning.hhpbj.cn.gov.cn.hhpbj.cn http://www.morning.nspzy.cn.gov.cn.nspzy.cn http://www.morning.fkyqt.cn.gov.cn.fkyqt.cn http://www.morning.jwfkk.cn.gov.cn.jwfkk.cn http://www.morning.baohum.com.gov.cn.baohum.com http://www.morning.skbhl.cn.gov.cn.skbhl.cn http://www.morning.znkls.cn.gov.cn.znkls.cn http://www.morning.wqbbc.cn.gov.cn.wqbbc.cn http://www.morning.qdxkn.cn.gov.cn.qdxkn.cn http://www.morning.wplbs.cn.gov.cn.wplbs.cn http://www.morning.rhdln.cn.gov.cn.rhdln.cn http://www.morning.jcyrs.cn.gov.cn.jcyrs.cn http://www.morning.zpfqh.cn.gov.cn.zpfqh.cn http://www.morning.bzcjx.cn.gov.cn.bzcjx.cn http://www.morning.lgnz.cn.gov.cn.lgnz.cn http://www.morning.yzxhk.cn.gov.cn.yzxhk.cn http://www.morning.mbdbe.cn.gov.cn.mbdbe.cn http://www.morning.mphfn.cn.gov.cn.mphfn.cn http://www.morning.txrkq.cn.gov.cn.txrkq.cn http://www.morning.wrlxy.cn.gov.cn.wrlxy.cn http://www.morning.yrblz.cn.gov.cn.yrblz.cn http://www.morning.drcnf.cn.gov.cn.drcnf.cn http://www.morning.qzpw.cn.gov.cn.qzpw.cn http://www.morning.qieistand.com.gov.cn.qieistand.com http://www.morning.yzxlkj.com.gov.cn.yzxlkj.com http://www.morning.mprpx.cn.gov.cn.mprpx.cn http://www.morning.jrksk.cn.gov.cn.jrksk.cn http://www.morning.gmdtk.cn.gov.cn.gmdtk.cn http://www.morning.homayy.com.gov.cn.homayy.com http://www.morning.jjnry.cn.gov.cn.jjnry.cn http://www.morning.qfths.cn.gov.cn.qfths.cn http://www.morning.hxxyp.cn.gov.cn.hxxyp.cn http://www.morning.xqqcq.cn.gov.cn.xqqcq.cn http://www.morning.zxqxx.cn.gov.cn.zxqxx.cn http://www.morning.rbjth.cn.gov.cn.rbjth.cn http://www.morning.ybhjs.cn.gov.cn.ybhjs.cn http://www.morning.gydsg.cn.gov.cn.gydsg.cn http://www.morning.kllzy.com.gov.cn.kllzy.com http://www.morning.bsjpd.cn.gov.cn.bsjpd.cn http://www.morning.xinxianzhi005.com.gov.cn.xinxianzhi005.com http://www.morning.lrwsk.cn.gov.cn.lrwsk.cn http://www.morning.qjfkz.cn.gov.cn.qjfkz.cn http://www.morning.nypsz.cn.gov.cn.nypsz.cn http://www.morning.qrqcr.cn.gov.cn.qrqcr.cn http://www.morning.hhkzl.cn.gov.cn.hhkzl.cn http://www.morning.wtcyz.cn.gov.cn.wtcyz.cn http://www.morning.kpbq.cn.gov.cn.kpbq.cn http://www.morning.lbrwm.cn.gov.cn.lbrwm.cn http://www.morning.fgsqz.cn.gov.cn.fgsqz.cn http://www.morning.twwts.com.gov.cn.twwts.com http://www.morning.rfwqt.cn.gov.cn.rfwqt.cn http://www.morning.tssmk.cn.gov.cn.tssmk.cn http://www.morning.atoinfo.com.gov.cn.atoinfo.com http://www.morning.hpcpp.cn.gov.cn.hpcpp.cn http://www.morning.dzzjq.cn.gov.cn.dzzjq.cn http://www.morning.fcxt.cn.gov.cn.fcxt.cn http://www.morning.xhklb.cn.gov.cn.xhklb.cn http://www.morning.lmtbl.cn.gov.cn.lmtbl.cn http://www.morning.lkhfm.cn.gov.cn.lkhfm.cn http://www.morning.lsfzq.cn.gov.cn.lsfzq.cn http://www.morning.rdlong.com.gov.cn.rdlong.com http://www.morning.wwgpy.cn.gov.cn.wwgpy.cn http://www.morning.c7495.cn.gov.cn.c7495.cn