Реагировать на редирект на index.html, www & https - PullRequest
0 голосов
/ 15 мая 2018

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

Они предоставляют полезную информацию, но я все еще застрял в положении, когда я получаю петли перенаправления в определенных ситуациях. Я надеюсь, что кто-то с намного более высокими навыками переписывания может указать на мои ошибки. Я не знаю, имеет ли это значение, но я использую «response-dom»: «^ 16.3.2», «response-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]

1 Ответ

0 голосов
/ 19 мая 2018

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

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 s на 301 s.

...