aplikace po nahrání na hosting hází error tikající se limit internal recursion
- Kureii
- Člen | 17
Dobrý den,
ve xampp jsem udělal funkční nette aplikaci. Když jsem jí dal na hosting
tak funguje pouze uvodní stránka, pokud kliknu na přesměrující odkaz (na
localhostu funkčni) vyhodí mi server chybovou hlášku
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at info@active24.cz to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.
a v logu se píše konkrétně toto
Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace., referer: domena.cz
nevím jestli jsem jen něco neudělal, jestli je chyba na straně hostingu nebo něco jiného, pokud nějáké informace chybí stačí říct. Předem díky za pomoc (btw. hosting linux na active 24)
- Kureii
- Člen | 17
<IfModule mod_autoindex.c>
Options -Indexes
</IfModule>
# enable cool URL
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteRule ^$ www/ [L]
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteRule (.*) www/$1 [L]
# 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|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>
edit: .htaccess vážně nerozumím
Editoval Kureii (25. 8. 2019 18:31)
- Gappa
- Nette Blogger | 209
Tohle se špatně debuguje, když člověk nemá přístup k tomu serveru, na kterém to zlobí – a dost často i tak :)
Já bych začal tím, že bych v tom .htaccessu nechal jen redirect, který slouží k rewritu cool url pro Nette, tj.:
# enable cool URL
<IfModule mod_rewrite.c>
RewriteEngine On
# front controller
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(pdf|js|ico|gif|jpg|jpeg|png|webp|svg|css|rar|zip|7z|tar\.gz|map|eot|ttf|otf|woff|woff2)$ index.php [L]
</IfModule>
A podívat se, co to dělá.
Ještě by asi bylo dobré se zeptat, co je to za verzi Nette? Ale asi nějaká novější, než 2.3, tam redirect na HTTPS dělala aplikace sama, když se to zaplo v routeru – to by mohlo způsobovat hezkou redirect smyčku, když se to pralo s VH/htaccess :)
- nightfish
- Člen | 519
@Kureii
Zkus se podívat do tématu https://forum.nette.org/…eb-ve-slozce,
v něm se kombinace Active24 a HTTPS řešila.
- Kureii
- Člen | 17
nightfish napsal(a):
@Kureii
Zkus se podívat do tématu https://forum.nette.org/…eb-ve-slozce, v něm se kombinace Active24 a HTTPS řešila.
Zkouším to ale nemůžu překonat chybu :
PHP Fatal error: Uncaught Error: Call to a member function getByType() on integer in /www/doc/www.domena.cz/www/www/index.php:16
Stack trace:
#0 {main}
thrown in /www/doc/www.domena.cz/www/www/index.php on line 16
kod v indexu mám takovýto :
<?php
declare(strict_types=1);
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) {
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' && isset($_SERVER['SERVER_PORT']) && in_array($_SERVER['SERVER_PORT'], [80, 82])) { // https over proxy
$_SERVER['HTTPS'] = 'On';
$_SERVER['SERVER_PORT'] = 443;
} elseif ($_SERVER['HTTP_X_FORWARDED_PROTO'] === 'http' && isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 80) { // http over proxy
$_SERVER['HTTPS'] = 'Off';
$_SERVER['SERVER_PORT'] = 80;
}
}
//$container = require __DIR__ . '/../app/bootstrap.php';
$container = require '/www/doc/www.domena.cz/home/app/Bootstrap.php';
$container->getByType('nette\application\application')->run(); //zde chybová hláška
- Kureii
- Člen | 17
<?php
declare(strict_types=1);
namespace App;
use Nette\Configurator;
class Bootstrap
{
public static function boot(): Configurator
{
$configurator = new Configurator;
//$configurator->setDebugMode('23.75.345.200'); // enable for your remote IP
$configurator->enableTracy('/www/doc/www.domena.cz/home/log');
$configurator->setTimeZone('Europe/Prague');
$configurator->setTempDirectory('/www/doc/www.domena.cz/home/temp');
$configurator->createRobotLoader()
->addDirectory(__DIR__)
->register();
$configurator->addConfig('/www/doc/www.domena.cz/home/app/config/common.neon');
$configurator->addConfig('/www/doc/www.domena.cz/home/app/config/local.neon');
return $configurator;
}
}
- Marek Bartoš
- Nette Blogger | 1280
No jasně. Namíchal jsi verzi 2.4 a 3.0. On ten index taky už vypadá trochu jinak.
- Kureii
- Člen | 17
Mabar napsal(a):
No jasně. Namíchal jsi verzi 2.4 a 3.0. On ten index taky už vypadá trochu jinak.
Dobře děkuju to pomohlo :) Bohužel ani přiložený návod mi nepomohl stále nemohu obejít error
Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace., referer: https://www.domena.cz/
- Marek Bartoš
- Nette Blogger | 1280
Do rootu projektu
# Redirect request to www folder
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
RewriteRule ^(.*)$ www/$1 [ns,L,QSA]
</IfModule>
Do /www
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L]
Máš ten htaccess takový chaotický, zbytek smaž. Pokud má hosting vlastní htaccess, tak na něj nesahej, případně ho postni sem.