刷新反应应用,404 错误.反应路由器问题



我正在使用反应样板(https://github.com/react-boilerplate/react-boilerplate( 我的应用程序在本地主机上运行良好,但是在服务器上部署在子目录中(重要!不在根目录中!(应用程序后,应用程序可以工作,直到刷新...如果我尝试在应用程序在其他路由(/something/here(中刷新时刷新,则未找到404错误页面。

我搜索了很多关于这个问题的信息,我弄清楚了问题是什么和解决方案,但我无法解决这个问题......你可以在这里看到问题解释: https://tylermcginnis.com/react-router-cannot-get-url-refresh/

我正在使用 React Router 4。也许我需要使用 历史Api回退:真 但是 Idk 如何将其与具有大量 webpack 配置文件(不仅一个..(的反应样板一起使用。有什么帮助吗?

我以前也遇到过这个问题。在本地主机上完全没问题,但在非根路由上刷新或直接输入非根 URL 总是给我 404。得出的结论是,它无法自行找到非根目录,因为 React 只有索引.html作为其 HTML 文档,并且需要一些重写规则。

就我而言,我的主机正在使用Apache并将.htaccess添加到我的Web根目录,并且具有以下内容:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>

对于 nginx,你当然需要修改 nginx 配置。我在这里找到了一个答案,它看起来比Apache简单得多:React-router和nginx

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

基本上你需要告诉 Web 服务器将所有请求转发到你的 React 索引.html,因此让 react-router 处理路由。

另一种解决方案是使用HashRouter,但会导致一些丑陋的 URL。

几天前我遇到了这个问题,但是使用 apache Web 服务器,所以就我而言,问题是 httpd.conf 文件中的标志 AllowOverwrite,需要从无更改为全部。

此外,还需要使用以下值创建一个 .htaccess 文件:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /your_directories/index.html [L]
</IfModule>

同样在 apache 配置中,您需要设置将在其中添加应用程序的虚拟目录,并在目录标签中添加以下行:

<Directory "/your_virtual_path_directory">
RewriteBase /
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

我希望我有所帮助

最新更新