Přesměrování na HTTPS z HTTP
- MajBoss
- Člen | 16
Zdravím, mám problém při přesměrování z HTTP na HTTPS.
V .htaccess mám toto:
Pokud však ty dva řádky pod #use HTTPS nechám odkomentované, na web se
mi nejde dostat a hází to hlášku: Tato stránka nefunguje. Web www.example.com vás
přesměroval příliš mnohokrát.
Mám podezření, že cosi v Nette mě tedy směruje zpět na HTTP a pak se to
zacyklí.
Musím někde v Nette ten zabezpečený protokol nějak zapnout anebo nastavit nějakou routování? Nebo v čem je problém?
- Zdeno1981
- Člen | 116
Ahoj @MajBoss
V Nette určitě problém nebude, zkus použit originální htaccess https://github.com/…ww/.htaccess
Sám ho použivám a stačilo odkomentovat pouze tyto řádky:
Editoval Zdeno1981 (28. 7. 2022 8:47)
- MajBoss
- Člen | 16
Zdeno1981 napsal(a):
Ahoj @MajBoss
V Nette určitě problém nebude, zkus použit originální htaccess https://github.com/…ww/.htaccess
Sám ho použivám a stačilo odkomentovat pouze tyto řádky:
Ahoj, bohužel stále ten stejný problém.
Koukal jsem do konzole a web mě pořád dokola přesměrovává na stejnou adresu s https. Po dvacátý už to prohlížeč zastaví.
- Kamil Valenta
- Člen | 834
Dej si do doc rootu třeba nějaký test.php (klidně i prázdný), který nebude startovat Nette. A zkus jej otevřít, pokud to bude OK, hledej v routě, jestli není fixně na http. Pokud se to i tam bude cyklit, hledej v Apache (conf, nadřazený htaccess, logy…)
- MajBoss
- Člen | 16
Kamil Valenta napsal(a):
Dej si do doc rootu třeba nějaký test.php (klidně i prázdný), který nebude startovat Nette. A zkus jej otevřít, pokud to bude OK, hledej v routě, jestli není fixně na http. Pokud se to i tam bude cyklit, hledej v Apache (conf, nadřazený htaccess, logy…)
Dobrý nápad, vyzkoušel jsem to a nefunguje ani ten test.php a bez přesměrování na HTTPS normálně funguje, takže chyba v Nette nebude. Akorát nevím, co přesně mám dělat, protože do nastavení serveru moc hrabat nemohu (mám klasickej webhosting) a žádný nadřezený .htaccess v rootu nemám. Prošel jsem taktéž logy webhostingu a nic tam o tom není.
Nevíte co s tím?
- MajBoss
- Člen | 16
Domm napsal(a):
Pokud je nette schované za reverse proxy tak se přesně toto dít může – htaccess tě někam nasměruje, ale nette tě hodí zpět protože neví o tom že je za proxy.
Je potřeba v konfiguraci nette nastavit proxy něco takového:
Pak by redirecty nette měli být již v pořádku.
To asi problém nevyřeší, neboť problém při přesměrování na HTTPS i je mimo Nette. Zřejmě bude chyba na straně serveru, takže zkusím podporu. Každopádně možná by to vyřešilo jiný problém, protože vždy, když mě Nette někam přesměrovává v metodě (linky fungují), tak mě přesměruje na https://example.com:80 – z nějakého důvodu k tomu hodí port 80 a to na https logicky spadne, může to být taky tou proxi?
- nightfish
- Člen | 525
MajBoss napsal(a):
To asi problém nevyřeší, neboť problém při přesměrování na HTTPS i je mimo Nette. Zřejmě bude chyba na straně serveru, takže zkusím podporu. Každopádně možná by to vyřešilo jiný problém, protože vždy, když mě Nette někam přesměrovává v metodě (linky fungují), tak mě přesměruje na https://example.com:80 – z nějakého důvodu k tomu hodí port 80 a to na https logicky spadne, může to být taky tou proxi?
Vypadá to, že k SSL terminaci dochází na proxy serveru a na Apache se dostane request už jenom přes HTTP (port 80). V takovém případě ti nastavení proxy v Nette zajistí správné generování URL s HTTPS.
Co se týká přesměrování HTTP na HTTPS, zkus svůj přesměrovávací kód v .htaccessu změnit na:
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
Editoval nightfish (28. 7. 2022 16:20)