如何使用React with Firebase托管在SPA上提供robots.txt?

Wil*_*mKF 9 robots.txt firebase single-page-application reactjs create-react-app

我有一个SPA使用,create-react-app并希望有一个robots.txt像这样:

http://example.com/robots.txt
Run Code Online (Sandbox Code Playgroud)

我在这个页面上看到:

您需要确保将服务器配置为在配置为从目录提供服务后捕获任何URL.

但对于firebase托管,我不知道该怎么做.

Luk*_*ner 8

只需将以下规则添加到“重写”部分即可firebase.json

"rewrites": [
      {
        "source": "/robots.txt",
        "destination": "/robots.txt"
      },
      {
        "source": "**",
        "destination": "/index.html"
      }
]
Run Code Online (Sandbox Code Playgroud)


Wil*_*mKF 7

在我的/public目录中,我创建了一个robots.txt.

在我的/src目录中,我执行了以下操作:

我创建了/src/index.js

import React from 'react'
import ReactDOM from 'react-dom'
import {TopApp} from './TopApp'
import registerServiceWorker from './registerServiceWorker'

import {BrowserRouter} from 'react-router-dom'

ReactDOM.render(
  <BrowserRouter>
    <TopApp/>
  </BrowserRouter>,
  document.getElementById('react-render-root')
)

registerServiceWorker()
Run Code Online (Sandbox Code Playgroud)

我创建了/src/TopApp.js

import React from 'react'

import {
  Switch,
  Route
} from 'react-router-dom'

import {ComingSoon} from './ComingSoon'
import {App} from './App'

export class TopApp extends React.Component {
  render() {
    return (
      <div className="TopApp">
        <Switch>
          <Route path='/MyStuff' component={App}/>
          <Route exact path='/' component={ComingSoon}/>
        </Switch>
      </div>
    )
  }
}
Run Code Online (Sandbox Code Playgroud)

由于/robots.txt提供的路由器路径未涵盖路径,因此它从我的公共目录中获取并根据需要发布了 robots 文件。

对于sitemap.xml.

  • 我尝试了这个,它似乎适用于 localhost,但不适用于通过 firebase 进行生产托管。生产呈现空白页面 (2认同)