Routing subdomen + výjimky

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

Zdravím. Pokouším se o následující konfiguraci routeru:

  • [www.]mojedomena.com → www.mojedomena.com (Homepage:default)
  • img.mojedomena.com → img.mojedomena.com (Images:default)

^ Tyto dva výjimkové případy mi fungují za pomoci následujícího kódu:

<?php
$router = new RouteList();
$router[] = new Route('//www.mojedomena.com/', 'Homepage:default');
$router[] = new Route('//img.mojedomena.com/', 'Images:default');
?>

K tomuto jsem se pokusil přidat – pokud nebude subdoména www nebo img tak chci něco jako nazev.mojedomena.com → Profiles:profile, nazev

Pokusil jsem se použít následující kód:

<?php

$router[] = new Route('//<id>.mojedomena.com/', 'Profiles:profile');

?>

Všechny profily se mi ovšem nyní přesměrují na Homepage:default. (Aplikuje se první pravidlo??)

Díky za rady :)

Editoval loneswan (24. 11. 2013 19:38)

Šaman
Člen | 2659
+
0
-

Které pravidlo se aplikuje zjistíš v debug panelu, když klikneš na Presenter:akce (stačí najet na delší chvíli). Zároveň tam zjistíš která pravidla odpovídají aktuální adrese a která ne.

Editoval Šaman (24. 11. 2013 20:45)

petr.pavel
Člen | 535
+
0
-

Aplikuje se první vyhovující pravidlo, takže bys měl šoupnout <id>.mojedomena.com na první místo a vyloučit z něj www a img. Jak přesně, to si nejsem jistý. Potřebuješ současně vyloučit doménu, která obsahuje www/img, nevyloučit ty, které to obsahují jen jako podřetězec (www-test, img2) a současně zachytit celý řetězec, pokud matchuje. Snad <id (?!^(www|img)$)>

Nejspíš bude transparentnější napsat jen jedno pravidlo s <id>.mojedomena.com a v něm pomocí FILTER_IN/FILTER_OUT řešit ty tři situace.