php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Zend Framework - neue default route


 
Cologne
26-01-2009, 02:59 
 
Hallo Forum,

ich habe jetzt den halben Sonntag damit verplempert und weiß einfach nicht mehr weiter.

Folgendes:
Eine Seite soll umgestellt werden.
Die bisherige Struktur der URLs wurde mit modRewrite auf .html gesetzt.

Jetzt kommt eine neue Applikation, die auf dem Zend Framework basiert.
Also hätte ich gerne im ZF, das die URL-Struktur etwa der alten Struktur angepasst wird.
Sprich: .html als Dateiendung

Beispielsweise:
module/controller/action.html
module/controller.html
module.html

Das Routing zu verändern ist an und für sich nicht das Problem, nur wie bekomme ich ZF dazu, das er das .html bearbeitet?


$router = Zend_Controller_Front::getInstance()->getRouter();
$route = new Zend_Controller_Router_Route(':module/:controlle/:action\\.html',
array(
'controller' => 'index',
'action' => 'index'
) );
$router->addRoute('default', $route);


Ich hoffe, hier läuft jemand rum, der sich mit dem ZF schon mal etwas genauer auseinander gesetzt hat und der mir grad mal auf die Sprünge helfen kann.

 
onemorenerd
26-01-2009, 08:41 
 
Benutze Zend_Controller_Route_Regex!
im Reference Guide gibt es sogar ein Beispiel für genau dieses Problem ...

Warum hängst du überhaupt eine Dateiendung an? Die Umstellung auf die neue Applikation ist jedenfalls ein guter Zeitpunkt, um damit aufzuhören.
Für eine Übergangsphase kannst du mit mod_rewrite alles mit .html auf ohne-html umschreiben.

 
Cologne
26-01-2009, 20:02 
 
Mit dem Regex-Router habe ich herumexperimentiert.
Ich habe es zwar hinbekommen, aber nur, wenn ich genau angeben konnte, wieviele Argumente die URL haben wird.
Aber das weiß ich ja nicht, das ist ja immer variabel.
Und ich möchte nicht zwangsweise /irgendwas/index/index.html verlinken, nur um die Lücken fürs Regex zu füllen.

Wieso ich .html nutzen möchte?
Die Seite befindet sich zu den relevantesten Single- und Longtail-Keywords unter den Top 3 bei Google.
Das ist ein enormer Besucherandrang, und ich möchte einfach kein Risiko eingehen, etwas von der Platzierung zu verlieren.
Zwar kann Google mit Redirects etc. umgehen, aber... 100% weiß das niemand so genau, wie Google das sieht, wenn sich plötzlich die ganze Struktur verändert und alles umgeleitet wird.
Ich möchte einfach auf Nummer sicher gehen und die alte Struktur beibehalten.

Aber dafür muss ich eine URL-Struktur mit variabler Argumenten-Zahl und .html-Endung haben. :(

 
onemorenerd
27-01-2009, 02:26 
 
Original geschrieben von Cologne
Mit dem Regex-Router habe ich herumexperimentiert.
Ich habe es zwar hinbekommen, aber nur, wenn ich genau angeben konnte, wieviele Argumente die URL haben wird.
Aber das weiß ich ja nicht, das ist ja immer variabel.

Was hast du denn für eine Applikation zusammengeschraubt? Routing ist doch im Wesentlichen das Mappen von URLs auf Actions. Eine Action arbeitet i.d.R. mit einer festen maximalen Zahl von Parametern. Wieso brauchst du jetzt mal mehr mal weniger?
Kann es sein, dass du eigentlich nur ein paar weitere Routen (und Actions) brauchst?

 
Cologne
27-01-2009, 16:48 
 
Ah, mmh... Okay...
Vielleicht habe ich das Prinzip der Routen bei ZF auch einfach falsch verstanden...?!?

Mir geht es um folgendes:
Wie oben schon gesagt, ist das Wichtigste, das ich das .html als Dateiendung beibehalten möchte.
Ganz gleich, wie lang die URL wird bzw. wieviele Parameter enthalten sind.
Die Parameter innerhalb einer URL können natürlich auch beliebig sein.
Damit meine ich, das neben evtl. module, controller und action auch Parameter wie offset/10/count/10/user/maennlich/auto/ford/waschen/ja/bla/irgendwas vorkommen könnten ;-)

Dann wäre meine URL also example.com/module/controller/action/offset/10/count/10/user/maennlich/auto/ford/waschen/ja/bla/irgendwas.html


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:43 Uhr.