Po přesunu na produkci vše krom homepage vrací 404
- grovik
- Člen | 76
Myslím, že to je nějaký problém s routováním.
Ale router se nezměnil a na vývojovém prostředí to fungovalo. Nikam se nic
nezaloguje jen Apache si zapíše, že byl požadavek a ten se redirektnul a
nakonec skončil tou 404.
Doplnění: Index webu se zobrazí (šablona projde atd.) Nefungují až
vygenerované odkazy.
(to jsem chtěl napsat ale myšlenky utekly moc rychle).
RouterFactory.php
<?php
declare(strict_types=1);
namespace App\Router;
use Nette;
use Nette\Application\Routers\RouteList;
final class RouterFactory
{
use Nette\StaticClass;
public static function createRouter(): RouteList
{
$router = new RouteList;
//$router->addRoute('<presenter>', 'Admin:in');
$router->addRoute('<sluzby>/<action>', 'sluzby:default');
$router->addRoute('<admin>/<action>', 'admin:default');
$router->addRoute('<presenter>/<action>[/<id>]', 'Home:default');
return $router;
}
}
.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
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>
záznam z logu Apache:
2a02:8308:b00b:b200:40c9:2a75:8cc5:4b9 - - [13/Apr/2023:22:05:01 +0200] "GET /sluzby/zivotnipojisteni HTTP/1.1" 404 840 "https://liveproperty.cz/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Geck
2a02:8308:b00b:b200:40c9:2a75:8cc5:4b9 - - [13/Apr/2023:22:05:05 +0200] "GET /sluzby/zivotnipojisteni HTTP/1.1" 301 620 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Saf
2a02:8308:b00b:b200:40c9:2a75:8cc5:4b9 - - [13/Apr/2023:22:05:05 +0200] "GET /sluzby/zivotnipojisteni HTTP/1.1" 404 516 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Saf
Ještě doplním:
- pořadí věcí v routeru jsem zkoušel nemělo to na nic vliv.
- oba server běží s https
- logování jsem zapnul a ale nikde ani pípnutí.
Editoval grovik (13. 4. 2023 23:36)
- Marek Bartoš
- Nette Blogger | 1280
404 máš z Apache, ne z Nette, takže se ti nedostane vůbec na index. Hádám, že máš ještě jeden .htaccess v rootu a bude chyba v něm
Btw. Vypni si debug mód. Vážně. A změň si pak heslo k databázi.
Editoval Marek Bartoš (13. 4. 2023 22:52)
- grovik
- Člen | 76
Marek Bartoš napsal(a):
404 máš z Apache, ne z Nette, takže se ti nedostane vůbec na index. Hádám, že máš ještě jeden .htaccess v rootu a bude chyba v něm
Btw. Vypni si debug mód. Vážně. A změň si pak heslo k databázi.
Já vím, že to je hláška od Apache, protože nenašel tu cestu. Jenže
logicky nic jiného napsat nemohl.
.htaccess je jen ve složce WWW a ta je root. tzn. vhost je tam jen jeden a ten
je namířený přesně tam.
Hesla se budou ještě měnit, to určitě, stejně jako výpisy chyb. To je teď výsledek mého zoufalství. Kdy se snažím zachytit cokoliv co by mohlo někde uplivnout chybu.
Doplnil jsem. Index funguje. Šablony se načtou vygeneruje se index, ale odkazy ze šablon co se vygenerují nefungují potažmo končí na té 404.
Editoval grovik (13. 4. 2023 23:37)
- grovik
- Člen | 76
Šaman napsal(a):
Když vše kromě homepage vrací 404, bývá to chybějící, nebo špatně nastavený mod_rewrite. Což může být buď chyba v .htaccess, nebo je vypnutý v nastavení php na serveru.
.htaccess
Je vypsaný na začátku. Protože to je jeden z podezřelých.
Mod_Rewrite je pochopitelně zapnutý. To byly první věci co jsem
zkoušel.
Mezitím jak jsem to psal jsem dostal nápad.
Takže tohle tomu scházelo a muselo to být v tom virtuál hostu
pro HTTPS
<Directory /var/www/web/www>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>