好的,我已经使用React和React-Router制作了单页应用,并将其推送到github页面上,但是当我刷新或在浏览器中点击返回时,我的所有路由都无法正常工作。当我本地提供服务时,我也遇到了同样的问题,但是当我按照这篇SO答案进行操作后,我创建了一个server.js文件,在每个路由上提供了一个静态HTML页面的重定向。下面是该文件的内容:
现在,我的问题是,当我将项目推送到github页面时,所有这些逻辑都被忽略了,github的路由接管了该页,我面临着无法刷新或直接访问/contact或/about的相同问题。我知道看起来像是一个明显的问题,因为github页面设计用于只托管静态站点,但我见过人们暗示使用其他方式创建每个路由的静态页面,例如这篇reddit帖子中的答案,但我不知道如何做到这一点。
我还应该提到,因为我已经在
我想我已经尽力尝试成功在gh-pages上托管它了,我知道有类似Single Page Apps for GitHub Pages的项目可以尝试解决这个问题,但我只是想看看是否有人在不使用它之前就已经成功地完成了这个项目。
FYI,这是我的app.js(包含路由逻辑):
任何帮助都将不胜感激,如果需要的话,我很乐意提供更多代码。
"use strict";
let express = require('express');
let path = require('path');
let app = express();
app.use(express.static('public'));
app.get('/contact', function(req, res){
res.sendFile('public/index.html', { root: __dirname });
})
app.get('/about', function(req, res){
res.sendFile('public/index.html', { root: __dirname });
})
app.get('*', function(req, res){
res.sendFile('public/index.html', { root: __dirname });
})
app.listen(8080, function(){
console.log('Listening on port 8080!')
})
现在,我的问题是,当我将项目推送到github页面时,所有这些逻辑都被忽略了,github的路由接管了该页,我面临着无法刷新或直接访问/contact或/about的相同问题。我知道看起来像是一个明显的问题,因为github页面设计用于只托管静态站点,但我见过人们暗示使用其他方式创建每个路由的静态页面,例如这篇reddit帖子中的答案,但我不知道如何做到这一点。
我还应该提到,因为我已经在
user-name.github.io
上有一个站点,所以这个站点正在user-name.github.io/projects
上托管,使其成为我的/
路由。我不知道这是否有任何区别,我只是觉得我应该提一下。我想我已经尽力尝试成功在gh-pages上托管它了,我知道有类似Single Page Apps for GitHub Pages的项目可以尝试解决这个问题,但我只是想看看是否有人在不使用它之前就已经成功地完成了这个项目。
FYI,这是我的app.js(包含路由逻辑):
import React, {Component} from 'react';
import {render} from 'react-dom';
import {Router, Route, browserHistory, IndexRoute} from 'react-router';
//Import custom components
import About from '../components/about.js';
import Contact from '../components/contact.js';
import Sidebar from '../components/sidebar.js';
import Imagelist from '../components/image-list.js';
render(
<Router history={browserHistory}>
<Route path="/" component={Sidebar}>
<IndexRoute component={Imagelist}/>
<Route path="/about" component={About}/>
<Route path="/contact" component={Contact}/>
</Route>
</Router>,
document.getElementById('content')
);
任何帮助都将不胜感激,如果需要的话,我很乐意提供更多代码。