路线重载生成在生产中找不到的404

时间:2018-07-20 23:28:14

标签: javascript reactjs react-router-v4 react-router-dom react-router-redux

我有一个奇怪的问题。我正在将反应路由器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上重新加载时,所有功能都可以正常运行:(

0 个答案:

没有答案