我在为 Apache 服务器上的 React 生成的 URL 路径重定向 404 错误时遇到问题。
场景:
假设我有一些由 React Router 生成的 URL:www.somewebsite.com/apps
问题:
如果最终用户单击刷新,如何重定向回 www.somewebsite.com/apps?
我尝试过的:
到目前为止,我可以将用户重定向到 www.somewebsite.com。我只需要获取重定向之前的路径。
设置 Apache 重写规则以重写对 React 应用程序 (index.html) 的所有请求。
将其放入您的虚拟主机配置或 .htaccess 文件中。
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [QSA,L]
</IfModule>
现在,当用户在像
/apps
这样的任何路线上按下刷新(或直接访问)时,您的React应用程序将被加载,并且路由器将显示相关路线。
注意:
RewriteCond
排除了静态文件的重写,这是必要的。
在我的反应案例中,仅当我导航到具有多个斜杠的链接时才会发生此错误: 例如。 www.abc.com/support 适用于 Apache 重写规则,但 www.abc.com/support/[电子邮件受保护] 失败
我的解决方案是打开index.html并使所有链接都指向主域。 替换
"./"
与 "/"
自 Apache 2.2.16 起,您可以在 FallbackResource
或
<Directory>
配置下设置 <VirtualHost>
。
FallbackResource /index.html
这将为所有未映射到文件的 URL 提供
index.html
服务,这允许 React Router 处理 URL。