Ako vypnúť automatické prepísanie URL v poli adresy v prehliadačí?

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

Dobrý deň,

používam Nette Framework v čo najväčšej možnej miere, ale nepoužívam routovanie a ani nenechávam framework aby sám vytváral adresy v odkazoch, pretože mi to takto jednoducho viac vyhovuje. Routovanie si robím sám v .htaccess.

Ale keď si napíšem odkaz s adresou stranka.com/presenter/action/1, tak v odkaze to vyzerá presne tak ako chcem, ale keď na to kliknem, tak v poli adresy v prehliadači sa mi objaví pôvodný tvar, ktorý vytvára Nette s otáznikmi a tak ďalej. Najprv som myslel, že to robí .htaccess, ale potom ako som zistil, že tvar v .htaccess sa odlišuje od tvaru v poli adresy, tak mi bolo jasne, že to tým nebude.

Dá sa v Nette niekde vypnúť aby to nerobil? Aby som po kliknutí na odkaz mal v poli adresy v prehliadači to isté ako je v odkaze? Teda stranka.com/presenter/action/1 a nie stranka.com?index.php?presenter=presenter&action=action&id=1 alebo tak nejak podobne.

Ale naozaj vás prosím neodkazujte ma na routovanie v Nette. Nerozumeli sme si a nemam čas s tým strácať čas a hľadať ktorá routa mi teraz začala ovplyvňovať ostatné routy a prečo mi to celé zrazu nejde, keď si cesty viem napísať aj sám.

Ďakujem.

toka
Člen | 253
+
0
-

Jak chceš Nette donutit, aby ti vytvářelo odkazy podle pravidel v htaccess, když mu to nepovíš „vnitřně“ přes routy? Nette neví, co máš v htaccess a tím pádem ti není schopné v šablonách generovat odkazy podle pravidel v htaccess uvedených.

Pokud se mýlím, opravte mne někdo.

Editoval toka (20. 8. 2010 11:03)

Panda
Člen | 569
+
0
-
class BasePresenter
{
	public $autoCanonicalize = FALSE;

	// ...
}

Ale přijdeš tím o kanonizaci.

Jen tak mimochodem, nic Tě nenutí používat routování v Nette, můžeš si klidně i napsat úplně vlastní routy.

Smokie222
Člen | 12
+
0
-

Ale ja nechcem aby mi generovalo odkazy.

Ja mám odkazy napísané ručne.

Možno len ja zle chápem celý proces akým funguje .htaccess a veci s tým spojené.
Ale ja to mám urobené tak, že mám ručne napísaný odkaz, bez toho aby do toho akýmkoľvek spôsobom zasahovalo Nette. Len proste čisto, napríklad

<a href="stranka.com/clanok/nazov/1/">

A v .htaccess mám napísané

RewriteRule ^clanok/[0-9a-z]+/([0-9]+)/$ /index.php?action=Clanok&presenter=Default&id=1

Ale keď kliknem na tento odkaz, tak sa síce dostanem tam kde chcem, ale adresa v prehliadači, v tom poli adries, je

http://stranka.com?presenter=Default&action=Clanok&id=1

namiesto

http://stranka.com/clanok/nazov/1/

Prosím všimnite si, že action má prehodenú pozíciu s presenterom.

Smokie222
Člen | 12
+
0
-

Panda: ďakujem, presne toto som hľadal.

toka
Člen | 253
+
0
-

Smokie222 napsal(a):

Ale ja nechcem aby mi generovalo odkazy.

Ja mám odkazy napísané ručne.

Možno len ja zle chápem celý proces akým funguje .htaccess a veci s tým spojené.
Ale ja to mám urobené tak, že mám ručne napísaný odkaz, bez toho aby do toho akýmkoľvek spôsobom zasahovalo Nette. Len proste čisto, napríklad

<a href="stranka.com/clanok/nazov/1/">

A v .htaccess mám napísané

RewriteRule ^clanok/[0-9a-z]+/([0-9]+)/$ /index.php?action=Clanok&presenter=Default&id=1

Ale keď kliknem na tento odkaz, tak sa síce dostanem tam kde chcem, ale adresa v prehliadači, v tom poli adries, je

http://stranka.com?presenter=Default&action=Clanok&id=1

namiesto

http://stranka.com/clanok/nazov/1/

Prosím všimnite si, že action má prehodenú pozíciu s presenterom.

Tak to pak ano, jak píše Panda. Nenapadlo mne, že si v šablonách děláš i odkazy ručně.

Smokie222
Člen | 12
+
0
-

No ano, asi som sa zle vyjadril v prvom poste. Skúšal som to aj s routami, ale zarazilo ma, že sa všetky routy navzájom ovplyvňujú a to spôsobovalo veľké problémy, pretože moje odkazy boli dosť rozmanité. Tak som to po dvoch dňoch nechal tak a radšej odkazy písal ručne.
Neviem prečo to nie je riešené tak ako v .htaccess, kde každá „routa“ bojuje len sama za seba a zvyšok si nevšíma.

Panda
Člen | 569
+
0
-

Routy se navzájem neovlivňují, každá se vykonává nezávisle. Celkem logicky pak ale záleží na jejich pořadí, protože MultiRouter prostě jede polem rout a první, která sedí, se použije. Stačí se pak jen držet pravidla „obecné routy na konec“ a vše je bez problémů.

Pokud se nepletu, tak velmi podobně pracuje i mod_rewrite.

Smokie222
Člen | 12
+
0
-

Tak mal som taky pocit, pretože som mal napísanú sadu rout, doplnil som jednu a zrazu mi niektoré prestali fungovať. Ale veď nevadí, nie je to žiadna killer featura, ani nič životne dôležité a dá sa bez toho zaobísť. Som rád, že sa to podarilo vyriešiť k plnej spokojnosti.

Panda
Člen | 569
+
0
-

No, killer feature to právě je, kompletní systém odkazů ovlivňuješ z jednoho místa a v momentě, kdy se rozhodneš něco trochu změnit, nemusíš procházet 50 šablon. No ale to je jedno, proti gustu… :-)

Jinak by bylo fajn, kdyby jsi měl konkrétnější ukázku toho, co Ti přestalo fungovat, můžeme to opravit/vysvětlit a poslouží to dalším lidem, co budou mít podobný problém.

Smokie222
Člen | 12
+
0
-

To máš pravdu, ale už tie problémové kusy kódu bohužiaľ nemám.

Ondřej Mirtes
Člen | 1536
+
0
-

Určitě bude jednodušší, když vyřešíš ten problém s routami, než abys to takhle prasil. Obcházíš tím jednu ze zásadních killer featur frameworku a přiděláváš si spoustu práce.

Smokie222
Člen | 12
+
0
-

Ondřej Mirtes napsal(a):

Určitě bude jednodušší, když vyřešíš ten problém s routami, než abys to takhle prasil. Obcházíš tím jednu ze zásadních killer featur frameworku a přiděláváš si spoustu práce.

Vieš čo, mam pocit, že to záleží od uhľa pohľadu. Skôr mám pocit, že tej práce bez rout mam menej. Veď odkaz musím napísať tak či tak, iba ho napíšem iným spôsobom (a veľmi sa mi nestáva, že by som ich potom niekedy menil) a masku v .htaccess musím taktiež napísať. Bez rout mám len o starosť menej, pretože nemusím bojovať s routami a testovať každý jeden odkaz, či náhodou som si novou routou neodstrelil niektoré staršie.

Ale je to vec názoru. Mne sa ľahšie robí bez rout, nikomu tento spôsob nevnucujem. A popravde nevidím dôvod, prečo by to malo byť „prasenie“. Ani tým nespomaľujem výkon (práveže zvyšujem, pretože je to statické) a ani si tým nevytváram bezpečnostnú dieru. Tak aké „prasenie“?