Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将Next.js中的URL从大写重定向到小写_Javascript_Reactjs_Next.js_Http Status Code 301_Vercel - Fatal编程技术网

Javascript 将Next.js中的URL从大写重定向到小写

Javascript 将Next.js中的URL从大写重定向到小写,javascript,reactjs,next.js,http-status-code-301,vercel,Javascript,Reactjs,Next.js,Http Status Code 301,Vercel,我需要将访问者从/Contact重定向到/Contact 当我这样做时,我得到一个无限重定向循环 这就是我所尝试的: //next.config.js 异步重定向(){ 返回[ { 来源:“/联系人”, 目的地:'/contact', 永久性:对 } ] } 以下命令将所有不存在的路径重定向到小写路径。如果找不到路径,它将显示404 import { useEffect } from 'react' import { useRouter } from 'next/router' import E

我需要将访问者从
/Contact
重定向到
/Contact

当我这样做时,我得到一个无限重定向循环

这就是我所尝试的:

//next.config.js
异步重定向(){
返回[
{
来源:“/联系人”,
目的地:'/contact',
永久性:对
}
]
}

以下命令将所有不存在的路径重定向到小写路径。如果找不到路径,它将显示404

import { useEffect } from 'react'
import { useRouter } from 'next/router'
import Error from 'next/error'

export default function ResolveRoute() {
  const router = useRouter()

  useEffect(() => {
    const { pathname } = router;

    if (pathname !== pathname.toLowerCase()) {
      router.push(pathname.toLowerCase())
    }
  },[router])

  return <Error statusCode={404} />
}
从“react”导入{useffect}
从“下一个/路由器”导入{useRouter}
从“下一个/错误”导入错误
导出默认函数ResolveRoute(){
const router=useRouter()
useffect(()=>{
const{pathname}=路由器;
if(路径名!==pathname.toLowerCase()){
router.push(路径名.toLowerCase())
}
},[路由器])
返回
}

将此文件名作为“[route].js”放在pages文件夹的根目录中,将起到全面覆盖的作用(除非该页面存在)。这将重定向到小写。如果已经准备好小写,则表示页面为404。

这是预期的。路由不区分大小写/Contact和/或Contact对nextjs具有相同的含义。所以它陷入了无限循环。我可以知道你对/Contact和/Contact的使用情况吗?我是说为什么你需要重定向这种url。@MonzoorTamal那不是真的;路由是区分大小写的;如果没有此重定向,
/Contact
将在
/Contact
工作时发出404。重定向不区分大小写。(参见,)。这似乎总是返回404错误页面,这是有意义的,因为
返回是无条件的。另请注意,
pathname
现在包含
params
,因此您需要将
.toLowerCase()
应用于
路由器.asPath
。最后,将其修改为
returnnull
将使用户转到小写路径,但不会解决SEO的任何问题,这将需要301/302重定向。