Fjernelse af Android N Preview

Jeg vil omdirigere alle webadresser til https. Jeg brugte koden nedenfor for at gøre det. Min hjemmeside er bygget op ved hjælp af simpel PHP. Jeg bruger ikke nogen open source-ramme eller CMS.

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

men det fungerer ikke og kaster følgende fejl:

siden svarer ikke. omdirigeret for mange gange.

  • 1 Sørg for at rydde din browsercache mellem testene. 301 permanente omdirigeringer bliver aggressivt cachelagrede. Ændring af omdirigeringer kan forårsage omdirigering af sløjfer mellem uaktuelle cachede omdirigeringer. Når du rydder din browsercache mellem hver test, sikres det, at du kun tester den aktuelle opsætning.
RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE] 

Dette er en "standard" HTTP til HTTPS-omdirigering. Hvis dette resulterer i en omdirigeringssløjfe (forudsat at du har nedsat din browsercache), har du enten en ikke-standard serverkonfiguration, eller du står bag en SSL-proxy, der administrerer dit sikkerhedscertifikat. Uanset hvad, skal du kontakte din webhosting-udbyder for at afklare.

Omdirigeringssløjfen opstår, fordi ... på trods af omdirigering til https://..., det HTTPS servervariablen opdateres ikke for at angive dette. Dette antyder, at din applikationsserver faktisk kommunikerer via almindelig HTTP til en slags front-end proxy, der håndterer SSL-forbindelsen til klienten.

  1. Du kan prøve at bruge HTTPS miljø variabel (dvs. %{ENV:HTTPS}) i stedet for HTTPS servervariabel (dvs. %{HTTPS}). Dette er et rimeligt almindeligt alternativ, som nogle delte værter bruger (når nej indlysende proxy bruges). For eksempel:

    RewriteCond %{ENV:HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302,NE] 

    (NB: Det er ikke nødvendigt at fange gruppen i RewriteRule mønster, dvs. ^(.*)$ kan forenkles til ^ - hvilket også er mere effektivt når regex går.)

Test med 302 (midlertidige) omdirigeringer for at undgå potentielle cachingproblemer, da 301'er cachelagres vedvarende af browseren (inklusive eventuelle fejlagtige omdirigeringer, du måske tidligere har eksperimenteret med). Du bliver nødt til at rydde din browsercache inden test.

ELLER,

  1. Hvis du står bag en proxyserver, der håndterer SSL-forbindelsen, er den "standard" måde at kontrollere X-Forwarded-Proto HTTP-anmodningsoverskrift (indstillet af proxyserveren, når anmodningen passerer igennem), i stedet for HTTPS servervariabel, i din tilstand. HVIS du står bag en proxyserver, så indeholder denne HTTP-anmodningsoverskrift den protokol, der bruges til at få adgang til proxyen, enten "http" eller "https". Men hvis du ikke står bag en proxyserver, er denne overskrift ikke indstillet. For eksempel:

    RewriteCond %{HTTP:X-Forwarded-Proto} ^http$ RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302,NE] 

    Men hvis du bruger noget som Cloudflares fleksible SSL-indstilling (i det væsentlige en SSL-proxy), skal du konfigurere sideregler i dine Cloudflare-indstillinger. (Implementering af en omdirigering i .htaccess under dette scenarie er valgfrit.)

Der kan være andre metoder, som du skal bruge, men din webhost skal bekræfte dette.

  • Tak Mr. White, jeg brugte cloudflare, og dit svar fungerede.
  • denne fungerede. RewriteCond %{HTTP:X-Forwarded-Proto} ^http$ RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302,NE]

arbejdet for dig: Charles Robertson | Ønsker du at kontakte os?

nyttige oplysninger