Megpróbálom kényszeríteni a WWW-t és a HTTPS-t, és a három szabályomból csak kettő lesz munka

Nem nekem dolgozik. Mit csinálok rosszul, a rettegett túl sok átirányítási hiba jelentkezik. Minden URL-t megpróbálok a WWW-re és a https-re kényszeríteni, bár megelégednék azzal, hogy mindent csak a https-re tudnék kényszeríteni

    RewriteEngine on
    RewriteBase /

    RewriteCond %{http_host} ^all-service-musical.com [nc]
    RewriteRule ^(.*)$ https://www.all-service-musical.com/$1 [r=301,nc]

    RewriteCond %{http_host} ^asmusic.org [nc]
    RewriteRule ^(.*)$ https://www.all-service-musical.com/$1 [r=301]

    RewriteCond %{http_host} ^www.all-service-musical.com [nc]
    RewriteRule ^(.*)$ https://www.all-service-musical.com/$1 [r=301,nc]

Az első két szabály jól működik együtt, de a harmadik szabály a www-url-t https-re próbálja módosítani. megszakítja az egészet ... van valami ötlet?

Megpróbáltam eltávolítani az összes fenti kódot, és megpróbáltam végrehajtani a feladat http: https részét a következő használatával:

RewriteEngine On
#RewriteCond %{HTTPS} off
#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Túl sok átirányítási hibát kapok akkor is, amikor a fenti megközelítést alkalmazva.

Ezt egyedül is kipróbáltam:

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://all-service-musical.com/$1 [R,L]

Ugyanezek az eredmények ... túl sok átirányítási hibával törik meg a webhelyet.

MrWhite ... Köszönjük, hogy időt szánt a válaszra, a kód, amely jelenleg a htaccess fájlban található:

RewriteEngine on
RewriteBase /
RewriteCond %{http_host} ^www.all-service-musical.com [nc]
RewriteRule ^(.*)$ https://all-service-musical.com/$1 [r=301,nc]

RewriteCond %{http_host} ^asmusic.org [nc]
RewriteRule ^(.*)$ https://all-service-musical.com/$1 [r=301]

RewriteCond %{http_host} ^www.asmusic.org [nc]
RewriteRule ^(.*)$ https://all-service-musical.com/$1 [r=301] 

Mivel a tanúsítvány az all-service-musical.com webhelyre vonatkozik (kezdek elgondolkodni azon, hogy az ilyen módon történő beállítása rossz tanács volt-e a tárhely társaságától), gondoltam próbáld meg átírni a kódot úgy, hogy a nem WWW verzió legyen a cél, azonban továbbra is ugyanaz a probléma merül fel, amikor az all-service-musical.com webhelyet beírom Az e címsor nem biztonságos, amikor a kódom az eredetileg közzétett WWW verzióval volt, amikor közvetlenül beírtam, akkor nem biztonságos.

Azt kellene gondolnom, hogy ez a kódkód, amelyet megadott:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=302,L]

Ha minden más eltávolításnak bizonyos mértékben önmagában kell működnie, de túl sok átirányítási hibával megtöri a webhelyet, még akkor is, ha ez az egyetlen dolog a htaccess fájlban.

Szeretem és értékelem a használatával kapcsolatos tanácsát. egy 302-es átirányítást, amíg meg nem kapom a megfelelő kódot, amit erre kitaláltam. Minden további tanácsot, melyben a kérdésem leselkedhet, nagyra értékeljük.

1
задан 12 May 2019 в 20:09
1 ответ

Если вы постоянно получаете петли перенаправления при попытке использования всех этих директив, очистите кеш браузера. Все не должны вызывать петли перенаправления. По этой причине рекомендуется протестировать с 302 (временными) перенаправлениями и менять на 301 (постоянное) только тогда, когда вы уверены, что они работают нормально.

 RewriteCond% {http_host} ^ all-service-musical.com [nc  ]
RewriteRule ^ (. *) $ Https: // www.all-service-musical.com/$1 [r = 301, nc]

RewriteCond% {http_host} ^ asmusic.org [nc]
RewriteRule ^ (. *) $ Https://www.all-service-musical.com/$1 [r = 301]

RewriteCond% {http_host} ^ www.all-service-musical.com [nc]
RewriteRule ^ (. *) $ Https://www.all-service-musical.com/$1 [r = 301, nc]
 

Во всех ваших первых трех директивах RewriteRule отсутствует флаг L , поэтому обработка будет продолжена для следующего правила и т. Д. Ваше третье правило, которое пытается «изменить URL-адрес www на https. "обязательно вызовет цикл перенаправления, поскольку вы просто перенаправляете его на себя. Чтобы перенаправить с HTTP на HTTPS, вам необходимо сначала проверить HTTP (например, HTTPS отключен ), как вы это делаете в последующих попытках.

 RewriteEngine On
 #RewriteCond% {HTTPS} выкл.
 #RewriteRule (. *) Https: //% {HTTP_HOST}% {REQUEST_URI} [R = 301, L]
 

Ваше 4-е правило перенаправляет на HTTPS на одном и том же хосте - это потенциально хорошая идея, если на всех ваших разных доменах (у вас их всего два?) Установлены сертификаты безопасности.

 RewriteCond% {HTTPS} off
RewriteRule ^ (. *) $ Https://all-service-musical.com/$1 [R, L]
 

Это перенаправление на вершину домена, а не на субдомен www (противоположность первым трем правилам). Это может потенциально привести к возникновению цикла перенаправления, если код сайта сам отправит перенаправление на канонический хост.

Допущения:

  • У вас есть одно каноническое имя хоста www.all-service-musical.com и все другие домены перенаправляют на это.
  • Сертификат SSL устанавливается непосредственно на вашем сервере приложений и не управляется внешним прокси.
  • Вы не реализуете HSTS. (В противном случае вам нужно сначала перенаправить на HTTPS на том же хосте и убедиться, что у вас есть сертификат SSL, установленный в каждом домене.)

Вместо этого попробуйте следующее в верхней части вашего .htaccess файл:

RewriteEngine On

# Redirect non-canoncial hostname
RewriteCond %{HTTP_HOST} !^www\.all-service-musical\.com$
RewriteRule (.*) https://www.all-service-musical.com/$1 [R=302,L]

# Redirect to HTTPS
# NB: This only applies if the canonical hostname is requested over HTTP
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=302,L]

Как упоминалось выше, изменяйте 302 на 301 только после того, как убедитесь, что он работает нормально, чтобы избежать проблем с кешем браузера.

0
ответ дан 4 December 2019 в 03:00

Теги

Похожие вопросы