我正在使用React-router,当我点击链接按钮时它工作正常,但是当我刷新我的网页时它没有加载我想要的东西.
例如,我进入localhost/joblist,一切都很好,因为我来到这里按一个链接.但是,如果我刷新网页,我得到:不能GET/joblist
默认情况下它没有像这样工作.最初我有我的URL:localhost /#/和localhost /#/ joblist,他们工作得非常好.但是我不喜欢这种网址,所以试图抹去我写的'#':
Cannot GET /joblist
Run Code Online (Sandbox Code Playgroud)
localhost /不会发生这个问题,这个问题总是返回我想要的.
编辑:这个应用程序是单页面,因此/ joblist不需要向任何服务器询问任何内容.
EDIT2:我的整个路由器.
Router.run(routes, Router.HistoryLocation, function (Handler) {
React.render(<Handler/>, document.body);
});
Run Code Online (Sandbox Code Playgroud) React Router 适用于本地计算机、Chrome,但不适用于 safari 和其他浏览器,
<Switch>
<Route exact path={"/"} component={Home} />
<Route path="/programs/:slug" component={Programs} />
<Route path="/page/:slug" component={Page} />
<Route component={NotFound} />
</Switch>
Run Code Online (Sandbox Code Playgroud)
这是我的代码,但它在开发模式下完美运行,没有错误,但在生产中,当我导航到programs/:slug 或 page/:slug 时,safari 给出 404 错误
我需要重写或添加到我现有的 .htaccess 文件,以便我的托管服务 (Hostinger) 可以对所有页面使用单个 index.html 文件,而不是尝试在服务器端获取新文件。我正在将 React 与 React-Router 一起使用,但它不了解如何正确使用路径。
现有文件:
这用于解决我的 SSL 问题
========================== 文件 ======================== ====
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.matthewendicott.space/$1 [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.matthewendicott.space/$1 [L,R=301]
Run Code Online (Sandbox Code Playgroud)
====================== 测试和类似问题==============
以下是我尝试过的一些事情:
https://hostpapasupport.com/set-301-permanent-redirect-using-htaccess/
这是一个类似的问题: