场景
我在我的应用程序中使用BrowserRouter
条路线。因此,如果我的基地是“ localhost:3000 / site1”,则虚拟页面可能是“ localhost:3000 / site1 / route1”。这在开发中工作正常,但在apache服务器上却不行。
问题
我假设react dev服务器总是将请求发送到主index.js /路由器,而在apache服务器上,它实际上正在寻找一个名为site1 / route1的页面。如果我在虚拟位置中刷新页面时,会从apache收到“找不到页面”错误。
当它在php服务器上时,如何使我的虚拟路由与我的生产React build一起使用?我需要通过.htaccess
文件添加一些重定向魔术吗?
答案 0 :(得分:0)
我通过在项目文件夹中使用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]
路径中的“构建”是由npm run build
创建的构建文件夹,这是我将.htaccess放入项目文件夹的部分原因,因此,如果有人窥视我的项目文件夹,它们将立即发送到build / index.html