reactjs 为什么react router在Apache服务器上从index.php提供React应用程序时显示404错误?

vuktfyat  于 2023-05-06  发布在  React
关注(0)|答案(1)|浏览(92)

我建立了一个应用程序,需要在现有的PHP网站上部署它。问题是,当我加载应用程序时,React路由器中断并引发404错误。我已经设置了一个新的React应用程序和一个本地服务器进行测试--我使用的是xampp。当通过index.php从构建目录提供index.html时,应用程序在没有react路由器的情况下加载得非常好。一旦我添加react路由器,它只显示一个404页面。有没有人使用过react router和apache?
index.js

const router = createBrowserRouter([
  { path: "/", element: <App /> },
 
]);
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <RouterProvider router={router} />
  </React.StrictMode>
);

index.php

<?php
header('Content-Type: text/html; charset=utf-8');
readfile(__DIR__ . '/build/index.html');
?>

在package.json中:

"homepage": "/test-app/build/"

.htaccess

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.html [QSA,L]
</IfModule>

正如我所说,如果我用应用程序替换路由器提供商,它工作正常,所以这是一个具体的React路由器问题。

2hh7jdfx

2hh7jdfx1#

我想明白了我需要在createBrowserRouter中添加一个基本名称。

createBrowserRouter(routes, { basename: "/test-app" })

相关问题