Базовое имя не работает должным образом

Я пытаюсь использовать базовое имя с реагирующим маршрутизатором, как описанона реак-роутере документации, Это связано сбазовый раздел будучи устаревшим.

Вот что у меня сейчас:

import { Route, Router, useRouterHistory } from 'react-router';
import { createHistory } from 'history';
import { render } from 'react-dom';

var history = useRouterHistory(createHistory)({
  basename: '/subdirectory'
});

render(
  <Router history={history}>
    <Route path='/' component={App}>
      <Route path='next' component={Next} />
    </Route>
  </Router>,
  document.getElementById('root')
);

Когда я иду вhttp://the-url.com/subdirectory страница загружается как положено (рендерингApp составная часть). Однако при переходе наhttp://the-url.com/subdirectory/nextЯ получаю ошибку 404. Мой конфиг nginx:

location /subdirectory {
  alias /path/to/index.html;
  index index.html;
  try_files $uri $uri/ /path/to/index.html;
}
 stefanil25 янв. 2017 г., 12:23
Есть какое-то решение для этого?
 Jatin23 авг. 2016 г., 18:48
Вы нашли какое-нибудь решение для этого?
 Jeremy Knees21 окт. 2016 г., 17:25
Кто-нибудь нашел решение для этого ??

Ответы на вопрос(2)

Я решил это с помощью:

import { Router, useRouterHistory } from 'react-router'
import createBrowserHistory from 'history/lib/createBrowserHistory'

const history = useRouterHistory(createBrowserHistory)({
    basename: '/',
})

<Router history={history}>

Я думаю, что проблема была в разных версияхhistory пакет.[email protected] использования[email protected], в то время какhistory уже в4.5.1, Поэтому убедитесь, что вы установили правильную версиюhistory пакет.

 Kanan Farzali05 мая 2017 г., 13:03
он отлично работает в разработке, но все равно не работает
Вот как мне удалось заставить его работать

Задайте базовое имя маршрутизатора для своего подкаталога следующим образом

<Router basename="/subdirectory">

Если вы использовали create-реакции-приложение и собираете с помощью npm run build, вам нужно установить домашнюю страницу вpackage.json чтобы пути были правильными в производственной сборке

homepage: "{http://www.the-url.com/subdirectory}"

Для конфигурации nginx предположим, что ваш index.html находится под/path/to/subdirectory/index.html, Тогда должно работать следующее

location /subdirectory {
    root /path/to;
    try_files $uri $uri/ /subdirectory/index.html;
}

Ваш ответ на вопрос