在Apache服务器上处理React Router

u2nhd7ah  于 7个月前  发布在  Apache
关注(0)|答案(3)|浏览(44)

我在Apache服务器上重定向React生成的URL路径的404错误时遇到问题。

场景:

假设我有一些由React Router生成的URL:www.somewebsite.com/apps

**问题:

如果最终用户单击刷新,我如何重定向回www.somewebsite.com/apps?

我尝试过的:

到目前为止,我能够将用户重定向到www.somewebsite.com。我只需要在重定向之前获得路径。

iq3niunx

iq3niunx1#

设置一个Apache重写规则来重写所有对你的React应用(index.html)的请求。
把它放在你的vhost配置文件或.htaccess文件中。

<IfModule mod_rewrite.c>
    Options -MultiViews

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.html [QSA,L]
</IfModule>

字符串
现在,当用户在/apps等任何路由上按下刷新(或直接访问)时,您的React应用程序将被加载,路由器将显示相关路由。
注意:RewriteCond排除了静态文件被重写的必要性。

huus2vyu

huus2vyu2#

在我的react案例中,只有当我导航到多个斜杠链接时才会发生此错误:例如,www.abc.com/support适用于Apache重写规则,但www.abc.com/support/[email protected]失败
我的解决方案是打开index.html并使所有链接指向主域。

x9ybnkn6

x9ybnkn63#

从Apache 2.2.16开始,您可以在<Directory><VirtualHost>配置下设置FallbackResource

FallbackResource /index.html

字符串
这将为所有未Map到文件的URL提供index.html,这允许React Router处理URL。

相关问题