reactjs - 使用 .htaccess 将除一个路由之外的所有路由转发到 react-router v4 的主页

标签 reactjs .htaccess

我正在使用 create-react-appreact-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/

相关文章:

javascript - 使用 404 撤销对某些页面的访问

apache - 301 重定向的重写规则

security - 如何阻止搜索引擎抓取整个网站?

.htaccess - 将用户从非认证 (non-www) 域重定向到认证 (www)

apache - 将 PHP 设置为始终在错误 500 时重定向

reactjs - 没有服务器的 react 应用程序

javascript - 如何在 saga 中解决第一个操作后执行操作?

javascript - defaultProps 覆盖 delevert 属性

reactjs - 在 React 中递归克隆和修改子组件 - 包括其他组件的子组件

reactjs - 在 React 中使用 Leaflet js 插件