Реагировать на параметры маршрутизатора - не удалось обновить страницу на сервере Apache - PullRequest
0 голосов
/ 09 января 2019

Я использую react router 4 на сервере, который использует Apache и имеет простую настройку для определенного маршрута:

<Route path="/:id/list" component={List} />

Страница получает идентификатор (this.props.match.params.id), затем выполняет вызов API для некоторого содержимого страницы.

При навигации по приложению все нормально и отлично работает. Однако, если текущий URL-адрес, например,

https://example.com/123/list

и я обновляю страницу, она не загружается. Нет ошибок, нет контента.

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

RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . /index.html [L]

Как я могу сделать что-то по-другому, чтобы он тоже загружал динамический контент при обновлении страницы?

Обновление страницы на локальном хосте при разработке работает должным образом.

Как подсказал первый ответ, я попробовал:

RewriteRule ^(.*)$ /index.html [NC,L,QSA]

Но без разницы.

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Для тех, у кого есть такая же проблема, я переключился на использование HashRouter вместо BrowserRouter, и оно работает как запланировано. Не идеально, так как лично мне не нравятся хеш-символы в URL, но пока это решение.

<HashRouter>
    <App />
</HashRouter>
0 голосов
/ 09 января 2019

Вероятно, проблема в том, что ваш сервер apache не знает, как обслуживать ваше приложение, когда получает запрос на /123/list. В основном вам нужно настроить правило подстановочного знака, чтобы перенаправить все неизвестные запросы на обработку вашей индексной страницей (которая будет выполнять маршрутизацию на стороне клиента).

Вот соответствующий вопрос, который я нашел: Перенаправить все на index.php htaccess

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...