我使用react js创建了一个站点。它使用browserHistory
在我的本地系统上正常工作但不在我的生产服务器上工作。第一次正确加载。当我刷新页面时,它会给我"找不到页面"错误。
我尝试过使用hashHistory
。它解决了我的问题,但我正在寻找更好的解决方案,因为我不想要包含#和随机密钥的复杂网址hashHistory
。 (我们希望它封装到类似http://example.com/about而不是http://example.com/#/about?_k=9yfmfq)
我的webpack.config.js代码 -
module.exports = {
entry: [
'./src/index.js'
],
output: {
path: __dirname,
publicPath: '/',
filename: 'bundle.js'
},
module: {
loaders: [{
exclude: /node_modules/,
loader: 'babel'
}]
},
resolve: {
extensions: ['', '.js', '.jsx']
},
devServer: {
historyApiFallback: true,
contentBase: './',
port: 3000
}
};
在apache2中寻找解决方案。很抱歉问了一个菜鸟问题。
答案 0 :(得分:2)
问题是当您第一次加载yourdomain.com
时,您的服务器默认提供index.html文件。因此,当您尝试yourdomain.com/something
时,您的服务器会尝试查找该文件,但由于它不存在,它将发送404.您必须配置服务器以将所有页面请求重定向到index.html
文件。
以下是nginx
-
single page application
配置
location / {
try_files $uri /index.html;
}
这会将所有网址重定向到index.html,这将加载您的javascript,然后所有路由都将由javascript处理。