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:
Require all granted
# disable directory listing
<IfModule mod_autoindex.c>
Options -Indexes
</IfModule>
# enable cool URL
<IfModule mod_rewrite.c>
RewriteEngine On
# RewriteBase /
# use HTTPS
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# prevents files starting with dot to be viewed by browser
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule /\.|^\.(?!well-known/) - [F]
# front controller
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(pdf|js|mjs|ico|gif|jpg|jpeg|png|webp|svg|css|rar|zip|7z|tar\.gz|map|eot|ttf|otf|woff|woff2)$ index.php [L]
</IfModule>
# enable gzip compression
<IfModule mod_deflate.c>
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json application/xml image/svg+xml
</IfModule>
</IfModule>
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 | 115
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:
# RewriteCond %{HTTPS} !on
# RewriteRule .? https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
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:
# RewriteCond %{HTTPS} !on # RewriteRule .? https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
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 | 811
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…)
- Domm
- Člen | 4
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:
http:
proxy:
- ip_proxy/maska
Pak by redirecty nette měli být již v pořádku.
- 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:
http: proxy: - ip_proxy/maska
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 | 516
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)