我在Apache服务器上重定向React生成的URL路径的404错误时遇到问题。
场景:
假设我有一些由React Router生成的URL:www.somewebsite.com/apps
**问题:
如果最终用户单击刷新,我如何重定向回www.somewebsite.com/apps?
我尝试过的:
到目前为止,我能够将用户重定向到www.somewebsite.com。我只需要在重定向之前获得路径。
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排除了静态文件被重写的必要性。
/apps
RewriteCond
huus2vyu2#
在我的react案例中,只有当我导航到多个斜杠链接时才会发生此错误:例如,www.abc.com/support适用于Apache重写规则,但www.abc.com/support/[email protected]失败我的解决方案是打开index.html并使所有链接指向主域。
x9ybnkn63#
从Apache 2.2.16开始,您可以在<Directory>或<VirtualHost>配置下设置FallbackResource。
<Directory>
<VirtualHost>
FallbackResource
FallbackResource /index.html
字符串这将为所有未Map到文件的URL提供index.html,这允许React Router处理URL。
index.html
3条答案
按热度按时间iq3niunx1#
设置一个Apache重写规则来重写所有对你的React应用(index.html)的请求。
把它放在你的vhost配置文件或.htaccess文件中。
字符串
现在,当用户在
/apps
等任何路由上按下刷新(或直接访问)时,您的React应用程序将被加载,路由器将显示相关路由。注意:
RewriteCond
排除了静态文件被重写的必要性。huus2vyu2#
在我的react案例中,只有当我导航到多个斜杠链接时才会发生此错误:例如,www.abc.com/support适用于Apache重写规则,但www.abc.com/support/[email protected]失败
我的解决方案是打开index.html并使所有链接指向主域。
x9ybnkn63#
从Apache 2.2.16开始,您可以在
<Directory>
或<VirtualHost>
配置下设置FallbackResource
。字符串
这将为所有未Map到文件的URL提供
index.html
,这允许React Router处理URL。