如何使用 React 和 Firebase 托管在 SPA 上提供 robots.txt 服务?
How can I serve robots.txt on an SPA using React with Firebase hosting?
我有一个使用 create-react-app
构建的 SPA,并希望有一个像这样的 robots.txt:
http://example.com/robots.txt
我在 this page 上看到:
You need to make sure your server is configured to catch any URL after it's configured to serve from a directory.
但是对于 firebase 托管,我不确定该怎么做。
在我的 /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()
我创建了 /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>
)
}
}
因为路径 /robots.txt
未包含在提供的路由器路径中,所以它从我的 public 目录中获取并按需要发布了机器人文件。
sitemap.xml
也可以这样做。
只需将以下规则添加到 firebase.json
中的 "rewrites" 部分
"rewrites": [
{
"source": "/robots.txt",
"destination": "/robots.txt"
},
{
"source": "**",
"destination": "/index.html"
}
]
我有一个使用 create-react-app
构建的 SPA,并希望有一个像这样的 robots.txt:
http://example.com/robots.txt
我在 this page 上看到:
You need to make sure your server is configured to catch any URL after it's configured to serve from a directory.
但是对于 firebase 托管,我不确定该怎么做。
在我的 /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()
我创建了 /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>
)
}
}
因为路径 /robots.txt
未包含在提供的路由器路径中,所以它从我的 public 目录中获取并按需要发布了机器人文件。
sitemap.xml
也可以这样做。
只需将以下规则添加到 firebase.json
"rewrites": [
{
"source": "/robots.txt",
"destination": "/robots.txt"
},
{
"source": "**",
"destination": "/index.html"
}
]