2017-04-19 22 views
0

我已經使用react js創建了一個站點。它在我的本地系統上使用browserHistory正常工作,但在我的生產服務器上無法正常工作。第一次正確加載。當我刷新頁面時,它給我「頁面未找到」錯誤。我試過使用hashHistory。它解決了我的問題,但我正在尋找更好的解決方案,因爲我不想要包含#和隨機密鑰的複雜網址hashHistory。 (我們希望它封裝了像http://example.com/about和不喜歡http://example.com/#/about?_k=9yfmfq當我們重新加載/刷新時,封裝URL以修復響應js應用程序頁面上的404錯誤

我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的解決方案。對不起,問一個noob問題。

+0

那麼...它是一個node.js應用程序? –

+0

否。在後端我有用戶WordPress。我已經從反應js發送axios請求到WordPress –

+0

您提供的代碼是用於dev服務器的嗎?你的生產配置在哪裏?你使用任何像Apache或Nginx的服務器? –

回答

2

問題是,當你加載首次一個yourdomain.com,您的服務器服務index.html文件爲默認值。所以,當你嘗試yourdomain.com/something時,你的服務器試圖找到那個文件,但是如果它不在那裏,它會發送404。你必須配置你的服務器來重定向所有的頁面請求到index.html文件。

這裏是single page application簡單nginx配置 -

location/{ 
    try_files $uri /index.html; 
} 

這都將URL重定向到index.html的,這將加載JavaScript,然後所有路由信息都會通過JavaScript的處理。

+0

嗨,謝謝。你可以讓我知道我應該遵循什麼樣的apache2服務器? –

+0

你應該將它作爲'apache單頁面應用程序「進行Google搜索。 –

+0

好的。我會查。如果您已經知道解決方案,請分享。 –

相關問題