我有一个使用create-react-app
构建的SPA,并且希望拥有像这样的robots.txt:
http://example.com/robots.txt
我在this page看到:
您需要确保将服务器配置为在配置为从目录提供服务后捕获任何URL。
但是对于firebase托管,我不知道该怎么做。
答案 0 :(得分:3)
在我的/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
,因此它从我的公共目录中获取并且根据需要发布了机器人文件。
sitemap.xml
也可以这样做。
答案 1 :(得分:2)
只需将以下规则添加到firebase.json
的“重写”部分
"rewrites": [
{
"source": "/robots.txt",
"destination": "/robots.txt"
},
{
"source": "**",
"destination": "/index.html"
}
]