antibart wrote:
NaN wrote:
Ist das wirklich die komplette .htaccess Datei?
Jupp ... ich benutze die bei allen (ca 20) CSMS-Projekten und sie wandelt alles in feinste hübsche URLs um ...
Ich vermute hier ein kleines Verständnis-Problem.
Die .htaccess-Datei macht keine hübschen URLs.
Genaugenommen macht sie genau das Gegenteil.
Sie wandelt die hübschen URLs in häßliche URLs um, da nur diese vom System interpretiert werden können.
Die hübschen URLs werden nach eigenen Regeln vom CMS selbst erstellt, wenn man in der config.php
Code: Select all
$config['assume_mod_rewrite'] = true;
verwendet.
Somit stehen im Browser wunderhübsche URLs, die auf dem Server mit Hilfe der .htacces-Datei wieder umgemodelt werden.
Das bekommt man als Besucher allerdings nicht mit.
In der Adressleiste des Browsers bleibt die angeforderte (hübsche) URL stehen.
D.h. die .htaccess-Datei muss auf das CMS abgestimmt werden.
antibart wrote:
NaN wrote:
[...]
Funktioniert der Detail-Link generell nicht, oder nur beim "Magazin"?
[...]
Nur beim Magazin - was ja ein Klon von News ist - haut es nicht hin. Bei News funktioniert es mit pretty URL tadellos.
Und das, obwohl Du keinerlei RewriteRules für das News-Modul in der .htaccess-Datei stehen hast?
Finde ich seltsam.
Kann es sein, dass Du beim "klonen" des News-Moduls irgendetwas übersehen hast?
Ich habe es gerade auch mal probiert.
Bei mir funktionert es ohne Probleme (CMSms 1.5.4).
Schau mal in die Datei Magazin.module.php.
Schau Dir mal in Zeile 63 die Funktion SetParameters() an.
Wenn dort noch etwas in der Art steht:
$this->RegisterRoute('/[nN]ews\/(?P[0-9]+)\/(?P[0-9]+)\/(?P.*?)
dann hast Du etwas übersehen.
Dort sollte soetwas stehen:
$this->RegisterRoute('/[mM]agazin\/(?P[0-9]+)\/(?P[0-9]+)\/(?P.*?)\/d,(?P.*?)$/');
$this->RegisterRoute('/[mM]agazin\/(?P[0-9]+)\/(?P[0-9]+)\/(?P.*?)$/');
$this->RegisterRoute('/[mM]agazin\/(?P[0-9]+)\/(?P[0-9]+)$/');
$this->RegisterRoute('/[mM]agazin\/(?P[0-9]+)$/');
Damit wird der Aufbau der pretty URLs bzw. wie der query-string der pretty URLs interpretiert werden soll festgelegt.
Ich vermute hier liegt der Grund dafür, warum es auch ohne entsprechende RewriteRule funktioniert:
Deine .htacces-Datei leitet einfach alles an die index.php weiter und hängt alles was da noch hinter der Domain steht als Query hinten dran.
RewriteRule ^(.+)(.html)?$ index.php?page=$1 [QSA]
Alle Anfragen wie z.B.
htp://deineDomain/irgendwas/irgendwas_anderes
werden zu
htp://deineDomain/index.php?page=irgendwas/irgendwas_anderes
Den Rest erledigt das CMS.
(der Query ist dann im Grunde genauso aufgebaut wie die internal pretty urls; ist übrigens ne clevere Idee anstelle für jedes Modul eigene RewriteRules anzulegen)
Dazu muss es aber wissen wie das "irgendwas" aufzudröseln ist.
Und das weiß es nur durch diese
SetParameters() Funktion und den Zeilen
$this->RegisterRoute.