场景
我在我的反应应用程序中使用了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