没有/#/无法重新加载React页面

时间:2017-11-03 21:31:15

标签: javascript reactjs url flask url-routing

我可以在我的网站上找到根路线并导航到不同的页面,没有网址中的“/#/”。但是当我刷新时,它会给我404页面。

例如,Unresponsive landing page。如果你进入投资组合页面,网址中没有哈希,一切似乎都很好。网址为https://kaisinlipersonal.herokuapp.com/。但是如果您在投资组合页面上刷新,https://kaisinlipersonal.herokuapp.com/portfolio会给出404.所有其他页面都相同。

知道为什么会这样吗?

我的路线档案:

import React from 'react';
import { IndexRoute, Router, Route, browserHistory } from 'react-router';

import Main from './components/Main';
import Home from './components/Home';
import Portfolio from './components/Portfolio';
import Contact from './components/Contact';
import Blog from './components/Blog';

export default (
    <Router history={browserHistory}>
      <Route path='/' component={Main}>
        <IndexRoute component={Home}/>
        <Route path='/portfolio' component={Portfolio} />
        <Route path='/blog' component={Blog} />
        <Route path='/contact' component={Contact} />
      </Route>
    </Router>
);

我使用的反应路线是版本3.

1 个答案:

答案 0 :(得分:1)

哈希(https://kaisinlipersonal.herokuapp.com/#hash)由客户端处理。服务器甚至不知道哈希是什么。

这意味着https://kaisinlipersonal.herokuapp.com/#hash实际上是对https://kaisinlipersonal.herokuapp.com/的请求。这就是您的索引页面所在的位置。

当您请求https://kaisinlipersonal.herokuapp.com/profile时,您不再加载索引页面。但是您需要加载索引页面,因为它必须处理URL。

因此,为了解决这个问题,您需要告诉服务器将所有请求重定向到/索引文件。

不幸的是,我没有使用Python / Flask的经验(我相信你使用它作为你的个人资料的服务器),但应该有一些方法可以使用该框架。