Automatické směrování na jazykovou verzi aplikace

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
maarlin
Člen | 207
+
0
-

Mám nastavené v bootstrapu routy takto:

$router[] = new Route('index.php', array(
	'presenter' => 'Homepage',
	'action' => 'list',
	'lang' => $lang
), Route::ONE_WAY);

$router[] = new Route('<lang cs|en>', array(
	'presenter' => 'Homepage',
	'action' => 'list'
));

A potřebuji, aby request na kořen webu / směroval via 301 rovnou na /cs nebo /en – tedy přímo na jazykovou verzi webu. Dá se to udělat nějak elegantně pomocí rout?

Aktuálně ty routy fungují, ale musím manuálně zadat adresu /cs nebo /en. Na / tvrdí, že nematchnul žádné routy, což chápu, protože povinný parametr lang není v requestu.

Jerry123456789
Člen | 37
+
0
-
<?php
$router[] = new Route('[<lang cs|en>]', array(
        'presenter' => 'Homepage',
        'action' => 'list',
	'lang' => 'en',
));
?>

//snad…

Editoval Jerry123456789 (2. 8. 2010 10:39)

maarlin
Člen | 207
+
0
-

Jerry123456789 napsal(a):

<?php
$router[] = new Route('[<lang cs|en>]', array(
        'presenter' => 'Homepage',
        'action' => 'list',
	'lang' => 'en',
));
?>

//snad…

Ta routa se sice takto matchne, ale zůstane na kořeni webu /, já právě potřebuji aby to bylo přesměrováno na /cs nebo /en.

BigCharlie
Člen | 283
+
0
-

tady si asi musíš vypomoci routou, která bude pouze přesměrovávat z / na konkrétní jazyk, tj. něco jako:

$router[] = new Route('<? index\.php|>', array(
	'lang' => 'cs',
	'presenter' => 'Homepage',
	'action' => 'list',
), Route::ONE_WAY);

Je jednosměrná, takže ti to nedovolí vygenerovat link bez jazyka. Zafungovalo?

maarlin
Člen | 207
+
0
-

BigCharlie napsal(a):

tady si asi musíš vypomoci routou, která bude pouze přesměrovávat z / na konkrétní jazyk, tj. něco jako:

$router[] = new Route('<? index\.php|>', array(
	'lang' => 'cs',
	'presenter' => 'Homepage',
	'action' => 'list',
), Route::ONE_WAY);

Je jednosměrná, takže ti to nedovolí vygenerovat link bez jazyka. Zafungovalo?

Ano, to je přesně ono, díky BigCharlie! :-)