Zachování portu při absolutním routování
- Pavel Janda
- Člen | 977
Ahoj, prosímvás jak nechat Nette udržet port při redirectech a link metodách, pokud routuji absolutně? Ono si ho rádo drží jen při relativním routování.. Díky
Port 8000
Protokol HTTP
Nette poslední composerové (~2.3.0)
Vhost: a.b.c
Celá URL projektu: http://a.b.c:8000/
Postup: Stáhnu Nette Sandbox, řeknu Apachi, ať poslouchá na 8000. Vytvořím Router:
$router[] = new Route(
'//[<subsub>.][<sub>.]%domain%', [
'presenter' => 'Homepage',
'action' => 'default'
]
);
Teď ani nedostanu stránku, kvůli kanonizaci se rovnou přesměruje na
http://a.b.c
. Vypnu auto kanonizaci, vytvořím link:
{link //this}
Co dostanu:
http://b.c // b.c je OK, port je neOK
Editoval Beton (16. 7. 2015 18:50)
- Jan Tvrdík
- Nette guru | 2595
Jaký port, jaký protokol, jaká verze Nette, jaký konkrétní router? Dokážeš to izolovat?
- Jan Tvrdík
- Nette guru | 2595
Zkusil bych
$router[] = new Route(
'//[<subsub>.][<sub>.]%domain%:8000', [
'presenter' => 'Homepage',
'action' => 'default'
]
);
- Pavel Janda
- Člen | 977
Vyměnil jsem tyto řádky (počínaje řádkem 397)
Nette\Application\Routers\Route
:
} else {
$host = $refUrl->getHost();
$host = ip2long($host) ? [$host] : array_reverse(explode('.', $host));
$url = strtr($url, [
'/%basePath%/' => $refUrl->getBasePath(),
'%tld%' => $host[0],
'%domain%' => isset($host[1]) ? "$host[1].$host[0]" : $host[0],
]);
$url = ($this->flags & self::SECURED ? 'https:' : 'http:') . $url;
}
za tyto:
} else {
$host = $refUrl->getHost();
$host = ip2long($host) ? [$host] : array_reverse(explode('.', $host));
$domain = isset($host[1]) ? "$host[1].$host[0]" : $host[0];
$protocol = $this->flags & self::SECURED ? 'https' : 'http';
if ($refUrl->getPort() !== Nette\Http\Url::$defaultPorts[$protocol]) { // If port differs from :80
$port = ":{$refUrl->getPort()}";
} else {
$port = '';
}
$url = strtr($url, [
'/%basePath%/' => $refUrl->getBasePath(),
'%tld%' => $host[0],
'%domain%' => $domain . $port,
]);
$url = "$protocol:$url";
}
Dává to smysl? Mám to poslat jako pullrequest? Je to chyba Nette?
Edit: Protokol, viz odpovědi
Editoval Beton (17. 7. 2015 13:32)
- David Matějka
- Moderator | 6445
@Beton minimalne bys tam mel resit i defaultni port pro https, nejen http
- Pavel Janda
- Člen | 977
@DavidMatějka Aj, good point.
@JanTvrdík Díky.
Editoval Beton (17. 7. 2015 12:36)