Перенаправление серверных запросов в /index.html для React / Angular SPA - PullRequest
0 голосов
/ 22 марта 2019

Допустим, у меня есть приложение React или Angular, размещенное по адресу www.mywebsite.com/index.html, где Apache обслуживает файл веб-приложения.Внутри приложения у меня есть много определенных маршрутов, таких как / aboutus или / faq.Но, как мы все знаем, на самом деле не существует файлов /aboutus.html или /faq.html.Эти маршруты встроены в маршрутизатор в веб-приложении.

Поэтому мне интересно, что произойдет, если кто-то попытается получить прямой доступ к www.mywebsite.com/aboutus без предварительной загрузки веб-приложения на www.mywebsite.com/index.html.Я читал в Интернете, что вы должны сделать для этой ситуации, так как у вас есть только один фактический файл, перенаправить все http-запросы в /index.html.Если вы используете Apache, вы должны настроить его для перенаправления всего.

Что мне интересно, так это то, как маршрутизаторы React / Angular знают, какой маршрут загружать после перенаправления.Например, если вы перейдете по адресу www.mywebsite.com/aboutus, он будет перенаправлен на www.mywebsite.com/index.html, и, согласно тому, что я прочитал в Интернете, приложение React / Angular сможет загрузить/ aboutus route внутри приложения после перенаправления.

Я бы предположил, что / aboutus теряется при перенаправлении.Если ваш сервер перенаправляет на www.website.com/index.html, то вы находитесь по другому URL-адресу и потеряли / aboutus.Веб-приложение загружается, но без исходного целевого URL оно не может знать, куда идти.Как это может работать?

Ответы [ 2 ]

1 голос
/ 22 марта 2019

сервер не должен перенаправлять / aboutus в /index.html с 30X кодом ответа. вместо этого он должен ответить 200 index.html. в этом случае браузер загрузит ссылку www ..... / aboutus (он получит тот же index.html, что и в пути .com / index.html, но только с другим URL-адресом), а остальные сценарии FE будут обрабатывать остальные

0 голосов
/ 22 марта 2019

и согласно тому, что я прочитал в Интернете, приложение React / Angular будет затем сможете загрузить маршрут / aboutus в приложение после перенаправление.

^^ Это правда - то, что вы прочитали, вовсе не ложь. Когда код маршрутизатора загружается, он проверяет текущий URL-адрес и проверяет, есть ли совпадения, если он находит совпадение, он отображает этот маршрут - в противном случае он будет использовать запасной маршрут (возможно, домашний или аналогичный).

...