Реагировать на перенаправление на index.html, www и https

У меня есть приложение для реагирования, опубликованное в Интернете. У меня есть решение, предложенное путем реагирования на перенаправление всех страниц на index.html, которое, похоже, само по себе работает нормально. Еще мне нужно все перенаправить на https: // www. Вот здесь все начинает разваливаться. Я могу найти отрывки из статей, например: перенаправление реактивного маршрутизатора на index.html И удаление www из URL-адреса в .htaccess

Они предоставляют полезную информацию, но я все еще застреваю в ситуации, когда в определенных ситуациях я получаю петли перенаправления. Я надеюсь, что кто-то с гораздо более высокими навыками переписывания сможет указать на мои ошибки. Не знаю, имеет ли это значение, но я использую «react-dom»: «^ 16.3.2», «react-router-dom»: «^ 4.2.2», «webpack»: «^ 4.8.1. "

Вот что я придумал:

Options -MultiViews
RewriteEngine On

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L,NE]

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www\.%{HTTP_HOST}%{REQUEST_URI} [R=302,L,NE]

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^. index.html [QSA,L]

«Я получаю петли перенаправления в определенных ситуациях»: для каких URL вы получаете цикл перенаправления и тестировали ли вы в новом браузере?

anubhava 15.05.2018 17:54

@anubhava На самом деле я получаю цикл перенаправления как на www, так и на https. Как есть, он работает только с действующим правилом index.html. Как только я добавляю правило www и https, я попадаю в цикл перенаправления.

Clinton 15.05.2018 21:25

Эти правила не вызовут цикл перенаправления, если нет другого конфликтующего кода / правила.

anubhava 15.05.2018 22:18
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
3
2 215
1

Ответы 1

Некоторые тонкие различия, которые могут улучшить ситуацию:

Options -MultiViews
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+) [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=302,L,NE]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www\.%{HTTP_HOST}%{REQUEST_URI} [R=302,L,NE]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.html [END]

Первое изменение предотвращает двойное перенаправление, шаблоны более простые, и, наконец, перезапись прекращается как можно скорее. Если это сработает, замените ваши 302 на 301.

Другие вопросы по теме