我有一个奇怪的问题。我正在将反应路由器dom与连接的路由器一起使用,并将基本名称与生产apache2服务器一起使用,其中我们有一个PHP应用程序。另外,httaccess
已正确配置为呈现SPA
问题的最小示例:
我有2条路线:
/
/clients
我的基本名称是/configuration
,因此在生产中,我使用的路由是**domain.com/configuration/**
和**domain.com/configuration/clients**
。
我可以毫无问题地使用连接的路由器转到任何路由,并正确地在**"/"**
路由上重新加载,但是...当我在**"/clients"**
路由上重新加载时,我得到了"Not Found The requested URL /configuration/clients was not found on this server."
< / p>
但是最奇怪的是,当我去**"/configuration/clients123**"
时,这是一条错误的路线,它可以完美呈现。显然,它不会渲染与/clients
路由关联的组件,但是会渲染布局,因此我放弃了httaccess
配置的问题。有人可能遇到这个奇怪的问题并找到了解决方案吗?将感谢您的帮助。
我将让问题的最小代码如下:
我在其中分配基本名称并声明路由器:
export const history = createHistory({
basename: '/configuration'
});
const routerMwre = routerMiddleware(history);
const sagaMiddleware = createSagaMiddleware();
const store = createStore(reducers, {}, compose(
applyMiddleware(sagaMiddleware),
applyMiddleware(routerMwre)
))
sagaMiddleware.run(watcherSaga);
export default store
class RouterApp extends Component {
render() {
return (<Layout {...this.props} changeClient={this.changeClient.bind(this)}>
<Switch>
<Route
exact
path={"/"}
component={Alerts}
/>
<Route
path={"/clients"}
component={Clients}
/>
</Switch>
</Layout>)
}
}
class Layout extends Component {
state = {
logoHeight: 40 - 10
}
render() {
{...}
if (!clientId || !clientLevel) {
return <Dimmer
page
active
>
<Loader
content="Cargando..."
/>
</Dimmer>
}
return (<Container>
<a onClick={()=>changeRoute('/clients')}>client</a>
<a onClick={()=>changeRoute('/')}>home</a>
{"Layout text"}
{this.props.children}
</Container>)
}
}
const mapStateToProps = ({ app }) => {
const { title, clients, clientId, clientLevel } = app;
return { title, clients, clientId, clientLevel };
}
export default withRouter(connect(mapStateToProps, {
changeId,
changeRoute,
fetchAlerts,
fetchReports,
putSession
})(RouterApp))
除了我在/configuration/clients
上重新加载时,所有功能都可以正常运行:(