Redirect stare adresy na novou
- turbo80
- Člen | 50
Zdravim,
potrebuji poradit mam stary web a tam jsou adresy
domena.tld/kategorie/neco samozrejmen tam neni jen
/kategorie/…
a ja potrebuji presmerovat trvale (301) na novou adresu
domena.tld/neco
nevim jestli to resit na strane routru nebo vytvorit redirect funkci v nem nacteni
public function redirect()
{
$url = new Nette\Http\Url;
$data = $url->getPath();
$row = $this->database('redirect')->where('url',$data);
if(!$row)
{
$this->error(); //404
}
$this->redirectPermanent($row['url']);
}
tuto fci bych pouzil v routru
public function createRouter()
{
$router = new RouteList;
$router[] = new Route('admin/[<locale=cz cz|en>/]<presenter>/<action>[/idParent=null][/uroven=0]', array(
'module' => 'Backend',
'presenter' => 'Homepage',
'action' => 'default'
));
$router[] = new Route('[<url>]', [
null => [
Route::FILTER_IN => function (array $params) {
\Tracy\Debugger::barDump($params['url'], 'url filtrer_in');
$row = $this->database->table('router')
->where('url', $params['url'])
->order('url ASC')
->fetch();
if($params['url'] == NULL)
{
return [
'presenter' => 'Front:Homepage',
'action' => 'default',
'locale' => 'cz',
];
}
if (!$row)
{
return NULL;
}
return [
'presenter' => 'Front:'.$row->presenter,
'action' => $row->action,
'url' => $row['url'],
'locale' => 'cz',
];
},
Route::FILTER_OUT => function (array $params) {
$row = $this->database->table('router')
->where('presenter', $params['presenter'])
->where('action', $params['action'])
->order('url ASC')
->fetch();
if (!$row)
{
return NULL;
}
return [
// 'locale' => $params['locale'],
'url' => $row->url,
'id' => isset($params['id']) ? $params['id'] : null,
];
},
],
]);
#$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
return $router;
}
vsem moc dekuji za pripadne rady…
Editoval turbo80 (25. 10. 2020 21:23)
- dakur
- Člen | 493
@turbo80 Já bych použil jednosměrky
v routeru, pokud to jen trochu jde. Pokud ne (např. podmíněné
přesměrování), pak bych zavolal $this->redirect()
v presenteru. Volat redirect ve FILTER_IN
se mi nějak nezdá, ale
nevím, jak moc je to čisté nebo jestli to vůbec jde.
Jinak se mi teda osobně moc nezdá ukládat si router do databáze, ale možná jsem ještě tento use-case nepotkal.
Editoval dakur (2. 11. 2020 9:48)