我有一个用 react 构建的网站,它使用 react-router。对于某些路由,我想为另一个页面或静态文件提供服务,但由于所有请求都转发到 react 路由器,因此它不起作用。
例如
www.myapp.com/sitemap.xml
www.myapp.com/something.html
^ 这些链接第一次有效,但是一旦我加载网站,它就不起作用,因为所有请求都通过react-router。
任何让它一直工作的解决方案。谢谢。
编辑
我正在使用配置为将所有请求重定向到 index.html 的 apache 服务器,我想这就是这种行为的原因。这是我的配置,但我不知道如何解决这个问题。
Options -MultiViews
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [QSA,L]
更新 我尝试了答案中建议的解决方案。
我的路线看起来像这样,对于 something.html 我正在加载 ServerLoad 组件
<Switch>
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/about" component={About} />
<Route path="something.html" component={ServerLoad} />
<Route component={NoMatch} />
</Switch>
在 ServerLoad 组件的 componentDidMount 函数中,我这样做了。但它不起作用。
componentDidMount() {
window.location.reload(true);
}
更多的 我已经安装使用create-react,应用该项目,并通过快递服务的服务器它(像这样)。我不确定是否需要在那里做一些设置来服务器其他静态文件。