Routy – URL se neprepisuje na kanonicky tvar

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

Zdravim Nette nadsence, at uz dobrovolne, tak ty praci nucene :).
Resim takovy kulantni problem, kdy se mi vetsina rout prepisuje na kanonicky tvar s www, ktere pozaduji, az na tento pripad:

$centralRouter[] = new Route('//[!www.]' . $domain . '/<locality>/?', 'Locality:region');

($domain berte treba „domena.cz“)

Spravne se rozpozna tvar bez i s www, vleze to do spravneho presenteru a akce, ale narozdil od jinych rout, kde pozaduji prepsani na tvar s www, se to tentokrat neprepise. Priklad routy, ktera se chova tak, jak chci:

$centralRouter[] = new Route('//[!www.]' . $domain . '/hledani/<locality>/?', 'Locality:search');

Nemate s timhle nekdo prosim nejake zkusenosti? Mohl bych dat „natvrdo“ www bez zavorek, ale libi se mi, ze uzivatel neni nucen zadavat www, ktere se automaticky doplni.

P.S.: Jsem take pro nepouzivani www, tohle je vsak zadani klienta.

Michal Vyšinský
Člen | 608
+
0
-

Nemělo by se tohle řešit (a nebylo by jednodušší) náhodou přes .htaccess? Např.:

####### Redirect na verzi domény s www ######
RewriteEngine on
RewriteCond %{HTTP_HOST} ^jakpsatweb.cz
RewriteRule (.*) http://www.jakpsatweb.cz/$1 [R=301,QSA,L]

(kód je z http://www.jakpsatweb.cz/…taccess.html)

Editoval CherryBoss (3. 6. 2013 14:11)

sKopheK
Člen | 207
+
0
-

Ja potrebuju i subdomeny jine nez www, ktere jedou pres bootstrap (dalsi zadani klienta). Vsechno jde jak na dratkach az na ten prvne uvedeny kod.

Napada me, zda by to nemohlo byt tim, ze v te akci „region“ presmerovavam (forward) na jinou akci podle toho, co se vrati z db pri hledani parametru „locality“. Nicmene kdyz sem zkousel predavat rizeni u jine akce, tak se www doplnilo.

Editoval sKopheK (3. 6. 2013 14:32)