url的大小写敏感导致的404问题
本文介绍了作者在使用 vuepress
搭建个人博客时,由于 url
的大小写敏感导致的 404 问题,以及解决方案。
当我在本地使用 docs:dev
运行时的,可以正常访问含有大写字母的所有网页,但当我部署网页到 Netlify
时,直接通过 url
访问时,会出现 404 错误。 而通过进入主页后逐步点击访问其他页面时,却是正常的。
由于 vuepress
是单页应用,逐步点击访问其他页面时,实际上是切换了路由,而不是真正去发送请求,因此不会出现 404 错误。
反复尝试
而经过反复尝试后最终发现,在页面中按 F5
时,url
中的大写字母会自动变成小写字母,导致无法正确访问。
在使用含有大写字母的文件夹/文件名时的,访问时的
url
也会含有大写字母的,这在docs:dev
环境和其它本地服务器环境下一切都可以正常运作。但当尝试使用
Netlify
等服务器托管环境时的,按F5
刷新网页时或直接通过url
访问时的,url
中大写字母会自动变成小写,从而导致 404 错误。尽管搜索引擎任然能爬取网站的内容,但点击访问时却会得到一个 404 错误。
因此我怀疑这是由于 Netlify
等服务器托管环境对 url
的大小写敏感,而我无法修改服务器配置,为此不得不将大写字母的文件夹/文件名改为小写字母。
但对于一些专有名词,转换为小写后失去了原有的意义,使得这只能是一个暂时且局部的解决方案,并不能完美地解决这个问题。
解决
进一步研究发现,这是 Netlify
服务器对 url
大小写不敏感的特性导致的。
该特性在 Netlify 论坛 中亦有提及,许多人呼吁 Netlify
应该提供一个选项来禁用该特性,但目前尚未有相关的解决方案。
因此,只能通过放弃使用 Netlify
等服务器托管环境,而使用其他的服务器托管服务,如 Cloudflare Pages
来解决这个问题。