ReactJS路由/Apache 服务器上的虚拟页面



场景

我在我的反应应用程序中使用了BrowserRouter路由。因此,如果我的基数是"localhost:3000/site1",那么虚拟页面可能是"localhost:3000/site1/route1"。这在开发中工作正常,但在 apache 服务器上则不行。

问题所在

我假设反应开发服务器总是将请求发送到主索引.js/路由器,而在 apache 服务器上,它实际上正在寻找一个名为 site1/route1 的页面。如果我在页面位于虚拟位置时刷新页面,则会收到来自 apache 的"找不到页面"错误。

问题

当虚拟路由在 php 服务器上时,如何让我的虚拟路由与我的生产 react 构建一起使用?我需要通过.htaccess文件添加一些重定向魔法吗?

我通过使用项目文件夹中的 apache 友好.htaccess文件解决了这个问题

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI}  /([^/]+)/?$  [NC]
RewriteRule .*   rel-path/to/project/build/index.html  [L]

我路径中的"build"是npm run build创建的构建文件夹 - 我将.htaccess放在我的项目文件夹中的部分原因是,如果有人偷看我的项目文件夹,他们将立即被发送到 build/index.html

最新更新