Všechna URL bez lomítka na konci
- jantichy
- Člen | 24
Ahoj, jak udělat, aby se jakékoliv URL v celé aplikaci kanonizovaly:
- vždy na variantu bez lomítka na konci,
- vždy na variantu s lomítkem na konci?
A nikoliv občas s lomítkem a občas bez lomítka, jak to dělá Nette standardně.
Prosím nechci tady žádné debaty na téma, jestli je stávající řešení správně a proč. Já ho třeba považuji za zcela špatné, ale diskuze na toto téma by nikam nevedla.
Potřebuju prostě řešení, jak zajistit všechna URL na webu jednotná a konzistentní. Ideálně, pokud by Nette nabízelo snadný přepínač ve smyslu „trailingSlash = ALWAYS|NEVER|AUTO“
Našel jsem, že se to tu ve fóru už vícekrát řešilo, ale nikde jsem nenašel rozumné řešení.
Díky, Honza
- Honza Marek
- Člen | 1664
Jedině si podědit třídu Route
a v metodě
constructUrl
si opravit výstup z
parent::constructUrl
. Nějak hezčeji to bohužel nejde.
- Jan Tvrdík
- Nette guru | 2595
Nešly by použít volitelné sekvence?
$route = new Route('[<presenter>[/<action>[/<id>]]]', array(
'presenter' => 'Dashboard',
'action' => 'default',
));
$route = new Route('[<presenter>/[<action>/[<id>/]]]', array(
'presenter' => 'Dashboard',
'action' => 'default',
));
- Vyki
- Člen | 388
Přes volitelné
sekvence je to nejlepší. Stačí každý další parametr napsat jako
<param>[/<param2>]
. To znamená že lomítko se za
param
vloží až společně s param2
. Bez lomítka by
to bylo <param>/[<param2>/]
Editoval Vyki (18. 7. 2010 21:08)
- Tharos
- Člen | 1030
Ano, ale to neřeší tu kanonizaci. Respektive požadavek na „presenter/view/“ povede na 404, namísto toho, aby byl přesměrován (ideálně přes 301) na „presenter/view“. Podle mě to až tak moc nevadí, protože aplikace ten odkaz s lomítkem na konci nikdy nevygeneruje, ale sám jsem se setkal se situací, kdy po mně přesně tuto kanonizaci klient chtěl, protože podle onoho klienta není až tak raritní, že se návštěvník snaží dostat na webu o úroveň výš tím, že umaže kousek url. Tak babo raď, sám nevím, jestli tohle návštěvníci reálně dělají :).
Jinak, jak psal Honza, řešit se to dá vlastním routerem. Já jsem to tak onehdy vyřešil.
Editoval Tharos (18. 7. 2010 22:34)
- David Grudl
- Nette Core | 8228
jantichy napsal(a):
A nikoliv občas s lomítkem a občas bez lomítka, jak to dělá Nette standardně.
Nette to dělá přesně tak, jak mu řekneš.
Prosím nechci tady žádné debaty na téma, jestli je stávající řešení správně a proč. Já ho třeba považuji za zcela špatné, ale diskuze na toto téma by nikam nevedla.
Silná slova chtějí argumenty!
- jantichy
- Člen | 24
Nette to dělá přesně tak, jak mu řekneš.
Výše uvedené volitelné sekvence vše vyřešily, předtím jsem o nich nevěděl, díky.
Silná slova chtějí argumenty!
A to je právě to, do čeho se mi nechce, už jsem to v minulosti asi dvakrát absolvoval v SEO konferenci a opravdu to nikam nevedlo. ;)
- Patrik Votoček
- Člen | 2221
Jen nahodím článeček přímo od Google http://google-cz.blogspot.com/…ebo-bez.html