我在我的 gatsby 项目中面临斜杠问题。当我尝试重新加载或触发网址Ex:website.com/page1时,它正在加载带有斜杠的网址,例如website.com/page1/然后它会返回到website.com/page1。它发生在每一页。我试过删除尾部斜杠插件,但没有得到结果
我将不胜感激任何帮助。谢谢你。
我在我的 gatsby 项目中面临斜杠问题。当我尝试重新加载或触发网址Ex:website.com/page1时,它正在加载带有斜杠的网址,例如website.com/page1/然后它会返回到website.com/page1。它发生在每一页。我试过删除尾部斜杠插件,但没有得到结果
我将不胜感激任何帮助。谢谢你。
这是我避免这个问题的方法:
<Link to="/some/path/">…</Link>
gatsby-node.js
通过createPage
API 调用生成页面时,始终使用path
尾部斜杠指定about.html
从请求到/about/
(Netlify 称之为“漂亮的 URL”)index.html
文件作为目录索引;禁用自动索引以获得良好的度量在大多数情况下,您只需要担心 #1 和 #2,但如果这不能解决您的问题,您会继续往下看。
您可以使用 Nginx 设置将每个尾斜杠 URL 重定向到非尾斜杠 URL,即您的 website.com/page1/ 重定向到 website.com/page1 URL
对于这种重写规则的 nginx 模式,例如 rewrite ^/(.*)/$ /$1 永久;
server {
listen 81 default_server;
listen [::]:81 default_server;
server_name example.ubuntu.com;
rewrite ^/(.*)/$ /$1 permanent;
root /home/bhupesh/Public/Work-Space/auth-ui/public;
index index.html;
try_files $uri $uri/index.html =404;
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
另一个解决方案是安装插件
npm install --save-dev gatsby-plugin-remove-trailing-slashes
然后通过gatsby-config.js进行配置
{
...
plugins: [
...,
`gatsby-plugin-remove-trailing-slashes`,
]
}
该插件旨在从 Gatsby 自身生成的路径中删除尾部斜杠。
然而,这并不能阻止对带有斜杠的页面进行解析,因为浏览器的构建方式是将 URL 解释为路径。
这意味着用户将需要采取额外的步骤来确保所有路由器链接都指向不以斜线结尾的路径。
例如,将渲染与 /about 相关的视图,但将在浏览器地址栏中显示为 /about/。
这是依赖路径驱动逻辑时的一个重要因素,例如在 Link 组件 activeClassName 和 activeStyle 道具的用例中。
例如,如果当前路由是 /about,则组件 <Link to="/about/" activeStyle={{ color: 'rebeccapurple' }}> 将因为斜线不匹配。