Funkce redirext v presenteru změní protokol z HTTPS na HTTP

milanb
Člen | 64
+
0
-

V aplikaci mám v preseneru v metodě startUp() tento řádek:

$this->redirect('Login:default');

Po jeho provedení se protokol HTTPS změní na HTTP. Vynucení HTTPS protokolu je nastaveno už na hostingu, tzn. nepoužívám pro něj pravidla v .htaccess. Když ale použiju metodu redirectUrl('/test.php'), tak se HTTPS zachová.
Pro jistotu uvádím .htaccess jak celého site:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule  ^$ www/    [L]
RewriteRule  ((?s).*) www/$1 [L]
</IfModule>

a v podsložce www/:

# Apache configuration file (see httpd.apache.org/docs/current/mod/quickreference.html)

# disable directory listing
<IfModule mod_autoindex.c>
	Options -Indexes
</IfModule>
<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteRule /\.|^\.(?!well-known/) - [F]
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz|map)$ index.php [L]
</IfModule>
<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>

Poraďte mi prosím, kde mám hledat chybu. Děkuji.

Marek Bartoš
Nette Blogger | 1153
+
0
-

Hosting může používat proxy, je třeba ji nastavit v configu
https://doc.nette.org/cs/configuring#…

milanb
Člen | 64
+
0
-

Dobrý den, zase mě to dohnalo, tak jsem se sanžil něco udělat, ale vše marné. V aplikaci jsme nic neměnil a .htaccess v root celé aplikace jsem nastavil podle dokumentace k Nette takto:

<IfModule mod_rewrite.c>
  RewriteEngine on
# přesměruje na HTTPS, jen když to není = je off = je to jen HTTP
  RewriteCond %{HTTPS} off
  RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# přesměruje do www/ vč. inline řetězců s konci řádků - způsobí to (?s)
  RewriteRule  ((?s).*) www/$1 [L]
</IfModule>

A ty 2 řádky s přemrnantním přesměrováním na HTTPS teď působí v prohlížeči tuhle chybu: NE_ERROR_REDIRECT_LOOP, čili zacyklení, protože dochází opakovanmě k přesměrování z http://magnusystem.cz/login/ na https://magnusystem.cz/login/ a zpátky.
inciální přesměrování z home page bez čehokoliv z adoménou v URL na /login se děje v startupu, jak píšu výše.

Co se toho hostingu a proxy týče, to jsem úplně nepobral a nevím ani, kam se na hostingu podívat, ani co pak v Nette nastavit.
Díky za pomoc.

milanb
Člen | 64
+
0
-

Jak to už bývá, hned jak jsem to napsal, napadlo mě řešení. Chyba je ve vlasntím kódu. Nejde ani tak o .htaccess. Volím totiž HTTP nebo HTTPS podle toh, jeslti jsem v testovací prostředí, tzn. zapínám něcojako TEST režim s Trace na základě prostředí, kde aplikace běží. A pokužívám k domu define('__IS_TEST__'). Jenže kód v router factory, který to testoval, byl špatně. Místo $flags = defined('__IS_TEST__') ? 0 : Route::SECURED; jsem měl jen $flags = __IS_TEST__ ? 0 : Route::SECURED;, což neí totéž.
Tak se omlouvám, že jsme rušil.