Reactjs 使用React路由器参数和Firebase RTD创建人类可读的URL

Reactjs 使用React路由器参数和Firebase RTD创建人类可读的URL,reactjs,firebase,firebase-realtime-database,react-router,react-router-dom,Reactjs,Firebase,Firebase Realtime Database,React Router,React Router Dom,基本上,我是想找出最好的方式,以结构我的网站在搜索引擎优化方面的网址。现在我的新闻URL的结构如下: 在我能做到的地方——从最后一个例子;直接从URL中作为参数提供的firebase密钥获取文章信息。然而,我知道这对SEO来说不是最佳选择——我想知道如何将其更改为URL结构如下: 我该怎么做 当涉及到主键和外键的使用时,我真的想不出任何其他理想的解决方案,因为我真的无法从firebase数据库中唯一地识别“标题”。如果我理解正确,您希望根据URL参数在路由上加载内容,而不是使用唯一的键,您

基本上,我是想找出最好的方式,以结构我的网站在搜索引擎优化方面的网址。现在我的新闻URL的结构如下:

在我能做到的地方——从最后一个例子;直接从URL中作为参数提供的firebase密钥获取文章信息。然而,我知道这对SEO来说不是最佳选择——我想知道如何将其更改为URL结构如下:

我该怎么做


当涉及到主键和外键的使用时,我真的想不出任何其他理想的解决方案,因为我真的无法从firebase数据库中唯一地识别“标题”。

如果我理解正确,您希望根据URL参数在路由上加载内容,而不是使用唯一的键,您需要一个可读的字符串

要做到这一点,您可以在创建时设置自定义firebase密钥名称,而不是唯一的自动生成密钥

定义自定义密钥:

firebase.database().ref('collection/' + customKey).set({
    username: name,
    email: email,
    profile_picture : imageUrl
  });
不要推送自动生成的文件:

firebase.database().ref('collection/').push({
        username: name,
        email: email,
        profile_picture : imageUrl
      });

我有点困惑,因为你还说你不能真正唯一地识别一个“标题”。路线必须是唯一的。同一个URL不能将您带到两个不同的网站。如果上面例子中的
位是唯一的,那么我上面的方法就可以了。

好主意,我现在就试试。然而,我将如何替换标题中的“空格”,并将其替换为“-”,以创建“绑定URL”?您误解了。自定义键不是您的标题值,而是您希望在url中看到的位。永远不会有空格,它将是
.ref('collection/'+'这是一个示例)
。措辞可能与您的标题匹配,但您的密钥是分开的。例如,如果要更新标题,此键字符串将保持不变。如果您询问如何用破折号替换字符串中的空格,请搜索SO或打开一个新问题。这是另一个问题。我要么使用正则表达式,要么使用split-and-join,这两个例子在这里都有