Реагирующий маршрутизатор на HTTP-сервере Apache с вложенными маршрутами

#reactjs #.htaccess #react-router

#reactjs #.htaccess #реагировать-маршрутизатор

Вопрос:

У меня есть HTTP-сервер Apache, работающий в foo.org . Я хочу разместить в foo.org/path1/my_app веб-приложении react web, которое использует react router

 <Router basename="/" history={history} >
  <div>
    <Switch>
      <Route path="/" component={Home} exact />
      <Route path="/route1" exact component={Route1Component} />
      <Route path="/:id/edit" exact component={Route2Component} /> // nested route!
      <Route component={ErrorComponent} />
    </Switch>
  </div>
</Router>
 

Я включил в foo.org/path1/my_app файл .htaccess файл со следующим содержимым:

 <IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On    
    RewriteBase /    
    RewriteRule ^index.html$ - [L]    
    RewriteCond %{REQUEST_FILENAME} !-f    
    RewriteCond %{REQUEST_FILENAME} !-d    
    RewriteCond %{REQUEST_FILENAME} !-l    
    RewriteRule . /path1/my_app/index.html [L]   
</IfModule>
 

В моем package.json я установил атрибут домашней страницы так, чтобы он соответствовал относительному пути
"homepage": "./"

Однако, когда я тестирую развернутое приложение, похоже, что react router не знает ни одного из маршрутов, поскольку все маршруты возвращаются к компоненту ошибки 404.

Комментарии:

1. Можете ли вы уточнить, каковы ваши URL-адреса react-app (на стороне клиента)?

2. URL-адреса на стороне клиента — это те, которые указаны в <Router> компоненте. так что «/» amp; «/route1» . Видимые URL-адреса должны быть «foo.org/path1/my_app /» amp; «foo.org/path1/my_app/route1 »