如何将特定的url重定向到主页,而不是使用盖茨比重定向到404 ?



我有一个url,例如mysite.com?utm_source=fb当用户触发此url时,需要重定向到主页。我尝试过客户端重定向插件,但没有解决

谢谢。

使用onClientEntryAPI(来自Gatsby浏览器)在用户进入站点时触发一个函数。在你的gatsby-browser.js:

export const onClientEntry = () => checkUtm();

checkUtm()是您的检查器功能,将其放在您想要的任何地方并将其导入您的gatsby-browser.js。函数应该是这样的:

export const checkUtm = ()=>{
if (typeof window !== "undefined"){
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const fromFb = urlParams.get('utm_source') === "fb";

if(fromFb) navigate("/");
}
}

typeof window !== "undefined"条件对于避免代码破坏很重要,因为在编译时,window(或其他全局对象)可能尚未定义。

其余的代码可以被操纵以满足您的确切需求,我已经添加了盖茨比的navigate,但根据您的需要进行更改。

如果我有url ex,我还有一个疑问:mysite.com?utm_source=IwAR1AjzvBHLFOp0CeER8X1XdBgGbLDyK9hDh2dVBe15ZXnWjEAae-C0sT67M像这样,每次string都会改变

的实现方式

这个应该可以工作:

export const checkUtm = ()=>{
if (typeof window !== "undefined"){
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const hasUtmSource = urlParams.get('utm_source');

if(hasUtmSource) navigate("/");
}
}

const hasUtmSource = urlParams.get('utm_source');语句将获得utm_source参数的任何值,因此,如果它存在,它将验证下一个条件,使navigate("/").

最新更新