Das Problem hatte ich auch, weiss aber gerade nicht wie ich das gefixt habe. Auf jeden Fall kannst du "useStrictParsing" in der urlManager config auf false setzen, dann sollte es auch gehen - ist aber eine blöde Lösung. Ich melde mich nochmal wenn ich es selber testen kann.
Also du kannst die Lösung ruhig nehmen - vermutlich störe sowieso nur ich mich an urlStrictParsing auf false. Denn mit der Einstellung kann man die rule "contact => site/contact" einfach direkt über http://example.com/site/contact aufrufen. Ich bin aber dafür nur explizit definierte rules zuzulassen.
Warum das so ist kannst du im RFC unter 2.2 nachlesen.
Mehr kann ich dazu nicht sagen.
Ich denke wir sollte da ein feature-request oder bug einschicken, denn man erwartet ja eigentlich das der url-suffix vorhanden sein muss. Hat mich auch etwas verwirrt…
Auf jeden Fall kannst du es mit einer Funktion lösen die prüft ob der Suffix gesetzt ist oder nicht und dann (wenn nötig) auf die korrekte URL umleitet. Ich habe z.B. einen "Hauptcontroller" der diese Funktion beinhaltet.
<?php
class BaseController extends CController
{
public function init()
{
$this->forceSuffix();
}
public function forceSuffix()
{
// Hier testen ob die Url korrekt ist und ggf. umleiten
}
}
?>
Deine einzelnen Controller leitest du dann von dieser Klasse ab. Natürlich könntest du da auch mit htaccess rumdoktern, ich finde die Lösung mit der Funktion aber besser.