Převedení webu na HTTPS a problém u redirect formulářů

iru
Člen | 110
+
0
-

Převedla jsem celý web na HTTPS pomocí htacess:

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

dělalo to smyčku při přesměrování, tak jsem někde vyčetla řešení, že se do bootstrap na začátek dá:
unset($_SERVER[‚HTTPS‘]);

to jsem udělala vše ok, jen při odeslání jakéhokoliv formuláře se web přesměruje na HTTP místo HTTPS a hodí mi to chybu. ERR_INVALID_HTTP_RESPONSE

Poradíte mi prosím, jak to správně udělat? Děkuji

GEpic
Člen | 562
+
0
-

Nic takového jako unset($_SERVER[‚HTTPS‘]); bys potřebovat neměla, stačí bohatě nastavení htaccess, mé nastavení je (aplikace je na subdoméně, pokud je navíc potřeba přesměrovat z non-www na www, tak můžu zaslat příklad taky)

# Apache configuration file (see https://httpd.apache.org/docs/current/mod/quickreference.html)
Allow from all

# disable directory listing
<IfModule mod_autoindex.c>
	Options -Indexes
</IfModule>

# enable cool URL
<IfModule mod_rewrite.c>
	RewriteEngine On
	# RewriteBase /

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

	# prevents files starting with dot to be viewed by browser
	RewriteRule /\.|^\.(?!well-known/) - [F]

	# front controller
	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>

# 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>

Editoval GEpic (24. 5. 2018 18:08)

iru
Člen | 110
+
0
-

GEpic napsal(a):

Nic takového jako unset($_SERVER[‚HTTPS‘]); bys potřebovat neměla, stačí bohatě nastavení htaccess, mé nastavení je (aplikace je na subdoméně, pokud je navíc potřeba přesměrovat z non-www na www, tak můžu zaslat příklad taky)

# Apache configuration file (see https://httpd.apache.org/docs/current/mod/quickreference.html)
Allow from all

# disable directory listing
<IfModule mod_autoindex.c>
	Options -Indexes
</IfModule>

# enable cool URL
<IfModule mod_rewrite.c>
	RewriteEngine On
	# RewriteBase /

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

	# prevents files starting with dot to be viewed by browser
	RewriteRule /\.|^\.(?!well-known/) - [F]

	# front controller
	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>

# 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 to umažu, tak dostávám chybu:

Web mojedomena.cz vás přesměroval příliš mnohokrát.
Zkuste vymazat soubory cookie.
ERR_TOO_MANY_REDIRECTS

GEpic
Člen | 562
+
0
-

A v nastavení domény máš tedy správně vygenerovaný SSL certifikát a přiřazen k doméně včetně zapnutého SSL portu (443)?

iguana007
Člen | 970
+
0
-

Routy sis upravila?

iru
Člen | 110
+
0
-

iguana007 napsal(a):

Routy sis upravila?

Routy mám takto:

public static function createRouter()
{
$router = new RouteList();

$router[] = new Route(‚certifikace‘, array(
‚presenter‘ ⇒ ‚Certifikaty‘,
‚action‘ ⇒ ‚default‘,
‚id‘ ⇒ NULL,
‚url‘ ⇒ ‚certifikace‘,
 ));

$router[] = new Route(‚[<url>]‘, ‚Clanky:show‘);

$router[] = new Route(‚<presenter>/<action>[/<id>]‘, ‚Homepage:default‘);
return $router;
 }

iru
Člen | 110
+
0
-

GEpic napsal(a):

A v nastavení domény máš tedy správně vygenerovaný SSL certifikát a přiřazen k doméně včetně zapnutého SSL portu (443)?

SSL certifikát je vygenerovaný, ale možnost nastavení SSL portu nevidím, kde by to mělo být?

iguana007
Člen | 970
+
0
-

Změň to takto a snad to pojede:

$router = new RouteList();

$router[] = new Route('certifikace', array(
'presenter' => 'Certifikaty',
'action' => 'default',
'id' => NULL,
'url' => 'certifikace'),
Route::SECURED);

Zbytek se mi nějak nezdá, ale jde o to, že ti tam chybí ten SECURED flag na konci definice routy.

Editoval iguana007 (24. 5. 2018 20:08)

iguana007
Člen | 970
+
0
-

Ono i zalezi na jake verzi Nette ti to bezi, protoze ten SECURE flag je uz v novych verzich deprecated a problem bude spise v konfiguraci VirtualHostu, htacess nebo serveru jako takoveho.

iru
Člen | 110
+
+1
-

Perfektní, děkuji moc. Já už jsem to jednou zkoušela, ale měla jsem tam v tom bootstrap
unset($_SERVER[‚HTTPS‘]);
bez kterého to předtím dělalo problém, ale teď když jsem změnila routy a ten unset odstranila, tak to pracuje, jak má…

iguana007 napsal(a):

Změň to takto a snad to pojede:

$router = new RouteList();

$router[] = new Route('certifikace', array(
'presenter' => 'Certifikaty',
'action' => 'default',
'id' => NULL,
'url' => 'certifikace'),
Route::SECURED);

Zbytek se mi nějak nezdá, ale jde o to, že ti tam chybí ten SECURED flag na konci definice routy.