URL se vkládá za konec existující

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

Ahoj,
mám obyčejné routy, podobných jste viděli jistě miliony:

<?php
  $router[] = new Route('admin/<presenter>/<action>/<id>', array(
    'module'    => ':Admin',
    'presenter' => 'Default',
    'action'    => 'default',
    'id'        => NULL
  ), Route::SECURED);

  $router[] = new Route('index.php', array(
    'module'    => 'Front',
    'presenter' => 'Default',
  ), Route::ONE_WAY);

  $router[] = new Route('<presenter>/<action>/<id>', array(
    'presenter' => ':Front:Default',
    'action'    => 'default',
    'id'        => NULL,
  ));
?>

vygenerují mi obyčejné odkazy, podobných jste již viděli jistě miliardy:

<a href="http://localhost/nejaky-web/document_root/
admin.default/nejaka-sablona1/">nejake misto1</a>
<a href="http://localhost/nejaky-web/document_root/
admin.default/nejaka-sablona2/">nejake misto2</a>

Otákzou zůstává, jestli jste už viděli, aby se (nacházíme se ve front modulu) spodní URL přidával za existující URL, přestože první i ostatní fungují na 100%:

tzn, že se mi neodkáže na:

„http://localhost/nejaky-web/document_root/admin.default/nejaka-adminska-sablona“

ale na:

„http://localhost/wg-acl/document_root/front.default/uplne-jedno-co/http://localhost/nejaky-web/document_root/admin.default/nejaka–adminska-sablona“

To nechápu. Podezříval jsem SimpleRouter, ale nevimnevim :( Poraďte prosím jak to odstranit.


EDIT: Ještě bych mě dodat, že to nejprve fungovalo, ale pak najednou začne dělat tyhle psí kusy a nechce přestat :O


PHP 5.2.6

Apache/2.2.10 (Win32) PHP/5.2.6

Nette Framework 1.0-dev (revision 1ac0863 released on 2010–07–01)

Editoval Pepča (23. 10. 2010 23:06)

mancze
Člen | 58
+
0
-

A jak přesně vypadá vygenerovaný zdroj HTML? Zkus tu admin routu linkovat absolutně, jestli to pomůže ({link //Admin:...}).

Je divný, že to je SECURED routa a přesto i v tom zmršeném URL není o https ani ň.


Edit:

teoreticky by tebou popisovanou chybu mohl generovat Latte kód:

<a href="./{link Admin:Presenter:go}">Administrace</a>

Editoval mancze (23. 10. 2010 23:15)

Pepča
Člen | 12
+
0
-

Absolutně jsem zkoušel…stejný výsledek.

Zdrojový html kód je přesně takový, jaký jsem ho sem zkopíroval…a o to je to divnější :O

i kvůli http místo https podezřívám simpleRouter

mancze
Člen | 58
+
0
-

Jestli je ve zdrojáku HTMLka

<a href="http://localhost/nejaky-web/document_root/
admin.default/nejaka-sablona2/">nejake misto2</a>

tak se to generuje dobře. SimpleRouter negeneruje cool URL.

mancze
Člen | 58
+
0
-

Napadlo mne, že by mohla být chyba v názvu modulu :Admin; to jsem předtím přehlídl. Mělo by tam být pouze Admin.

Pepča
Člen | 12
+
0
-

<škrtnout> nenene, před modul se, a teď použiju silná slova, musí dávat „:“ </škrtnout>

EDIT: kecám, „:Admin:Default:“ je to absolutní odkaz, „Admin:Default:“ je relativní odkaz

Editoval Pepča (24. 10. 2010 0:41)

Pepča
Člen | 12
+
0
-

tak jsem zjistil (světe div se, pomocí IE), že se za předchozí výsledný HTML kód není takový, jak se zdá. Totiž před ony adresy jsou vloženy prázdné znaky, které Opera vykreslí jako "" (hodnota mezi uvozovkami, tedy nic). Ovšem IE místo nich hodí „?“:

<a href="???https://localhost/web/document_root/secured/nastaveni/">Nastavení</a>
<a href="?https://localhost/web/document_root/secured/">Administrace</a>

Podle mě to je UTF-8 šotek, který je tam hází…zkusím přepsat kód…ale kdyžtak můžete dumat nad tím, co by mohlo pomoct, kdyby přepsání nevyšlo :D


Nevyšlo :/ nicméně další fakt: postižené jsou 2. a 3. odkazy. 1., 4. až x-tý jsou v pořádku. tudíž jsem to „vyřešil“ tím, že 2. a 3. odkaz hodím jako prázdné (takže se nezobrazí)…

Editoval Pepča (24. 10. 2010 20:15)