Smyčka přesměrování (Nette Framework)

Vyřešeno2.03K zhlédnutíWebhosting
0

Zdravím,

na novém hostingu mám zvláštní problém se smyčkou přesměrování v Nette aplikaci. Problém vypadá dost nedeterministicky, někdy smyčka nastane, někdy ne. Dochází k němu pouze na hostingu na WEDOSu (nikoli na lokálním ani testovacím serveru) a po přidání logovacích výstupů na všechna kritická místa v aplikaci vím, že redirect nevolám v presenterech aplikace. Už mě napadá jen chyba v .htaccess (mám v něm pravidlo pro vynucení HTTPS). Přidávám tedy .htaccess v adresáři www/ (kde je umístěn sandbox) a www/www (kde je pomocí .htaccess nastaven webroot) a prosím o pomoc.

www/.htaccess:

# htaccess rules for subdomains and aliases
# to create new subdomain, create a folder www/subdom/(subdomain name)
# to create web for alias, create a folder www/domains/(whole domain name)
 # htaccess pravidla pro subdomeny a samostatne weby aliasu
# pro vytvoreni subdomeny vytvorte adresar www/subdom/(nazev subdomeny)
# pro vytvoreni webu pro alias vytvorte adresar www/domains/(cely domenovy nazev)
# dalsi info a priklady: https://kb.wedos.com/cs/webhosting/htaccess/htaccess-na-webhostingu
 RewriteEngine On
 # Force HTTPS
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]
Header set Content-Security-Policy "upgrade-insecure-requests;"
 # cele domeny (aliasy)
RewriteCond %{REQUEST_URI} !^domains/
RewriteCond %{REQUEST_URI} !^/domains/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteCond %{DOCUMENT_ROOT}/domains/%2 -d
RewriteRule (.*) domains/%2/$1 [DPI]
 # subdomeny (s nebo bez www na zacatku)
RewriteCond %{REQUEST_URI} !^subdom/
RewriteCond %{REQUEST_URI} !^/subdom/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.([^\.]*)\.([^\.]*)$
RewriteCond %{DOCUMENT_ROOT}/subdom/%2 -d
RewriteRule (.*) subdom/%2/$1 [DPI]
 # aliasy - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R]
 # subdomeny - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^subdom/[^/]+/(.+[^/])$ /$1/ [R]
 # Nette Framework
RewriteCond %{HTTP_HOST} ^(www.)?(.*).([^.]*).([^.]*)$
RewriteCond %{DOCUMENT_ROOT}/domains/%2.%3.%4 !-d
RewriteCond %{DOCUMENT_ROOT}/subdom/%2 !-d
RewriteCond %{HTTP_HOST} ^(www.)?([^.]*).([^.]*){2,4}$
RewriteCond %{REQUEST_URI} !^www/
RewriteCond %{REQUEST_URI} !^/www/
RewriteCond %{DOCUMENT_ROOT}/www -d
RewriteRule (.*) www/$1 [DPI]
# Nette Framework

www/www/.htaccess:

# Apache configuration file (see https://httpd.apache.org/docs/current/mod/quickreference.html)
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} !on
 # RewriteRule .? https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
  # 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|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>

Role: Zákazník
Otázka je uzamčena pro nové odpovědi.
JŠ255861 Vybral nejlepší odpověď
0
53.63K Odpověď od WEDOS Internet, a.s. 1 Komentář

Dobrý den,

o jaký web se přesně jedná? Můžete přiložit výstřižek chyby?
Smyčku při přesměrování Vám samozřejmě může způsobit nastavení přesměrování z HTTP na HTTPS ale i pokud tam máte verzi s www nebo bez.

Samotné přesměrování na HTTPS je tedy vhodné mít pouze v jednom z .htaccessů

Role: Podpora Web: https://stackoverflow.com/ Vizitka: Roses are Red, Violets are Blue Unexpected '{' on line 32.
JŠ255861 Vybral nejlepší odpověď
Prohlížíte 1 ze 1 odpovědí, klikněte zde pro zobrazení všech odpovědí.