react 路由使用HashRouter时怎么去掉url中的#/

在本地开发时react 路由用了 BrowserRouter ,但是整合springboot后失效了,后来网上说要将 BrowserRouter 换成 HashRouter 。但是url会出现 #/ 怎么才能将 #/ 去掉呢?这样太丑了,而且影响爬虫爬取 /robots.txt 文件

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    可以使用BrowserRouter并结合服务器端配置来去除URL中的#/。

    步骤如下: 1. 在React应用中使用BrowserRouter替代HashRouter 2. 在服务器端进行配置,将所有路径都重定向到应用的入口html文件,在此文件中加入路由相关的JS和CSS文件,确保React应用能够正确运行。 3. 对于一些特殊的路径,如'/api',需要在服务器端进行特殊处理,确保不会被重定向到React应用的入口文件中。

    关于第二步,以下是一个可能的Nginx配置示例:

    location / {
      try_files $uri /index.html;
    }
    

    这样,所有的URL都被重定向到了应用的入口html文件,并确保了React应用的正确运行。

    如果需要处理一些特殊的路径,如'/api',可以加入如下配置:

    location /api {
      # 处理api请求
      ...
    }
    

    这样,被配置为'/api'的路径就不会被重定向到应用的入口html文件中,而是正确地处理api请求。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^