我正在使用 create-react-app
和 react-router v4
。我有一个有很多路径的站点,但是,一个路径是一个名为 assets
的文件夹的文字路径,其中提供图像、图标等。
网站结构是这样的:
.. [root]
assets [dir]
index.html [file]
但是,我有许多指向 CRA 应用程序的 index.html
的虚拟 URL。我如何使用 .htaccess
将除 assets
中的请求之外的所有请求转发到 index.html
文件?
或者,是否有处理这种情况的更好/最佳实践?
我试过了,但它给出了 500 错误。
Options -Indexes
RewriteEngine On
# Forward to HTTPS
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} example\.com [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R,L]
# Forward to React
RewriteBase /
RewriteCond %{REQUEST_URI} !^/(assets)(/|$)
RewriteRule ^(.*)$ / [L,QSA]
最佳答案
改变这一行:
RewriteCond %{REQUEST_URI} !^/(assets)(/|$)
通过这个:
RewriteCond %{REQUEST_URI} !^/(assets/?|$)
因为您已经排除了 assets
目录,但此 ^(.*)$
仍将捕获任何其他内容,甚至是已通过此规则的请求,这将使循环.
注意:清除浏览器缓存然后测试
关于reactjs - 使用 .htaccess 将除一个路由之外的所有路由转发到 react-router v4 的主页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49439935/