Also, ich probier's 'mal...
Zunächst einmal solltest du dir überlegen, wie die URLs aussehen sollen, die umgeschrieben werden sollen. Insbesondere ist auf Eindeutigkeit zu achten.
Wenn du deine Rewrite-Regeln getestet hast und sie fehlerfrei funktionieren, dann erst kannst du dich um die Menüerzeugung kümmern.
In meinen Beispielen soll am Ende etwas herauskommen in der Form
http://www.domain.tld/rubrikverzeichnis/rubrikname.html
bzw. nach dem Rewrite:
http://www.domain.tld/rubrikverzeichnis ... rubrikname
Im einfachsten Fall hast du nur ein einziges Rubrikverzeichnis, nämlich "_rubric". Dann würdest du vermutlich folgende rewrite-Regel in deiner .htaccess-Datei definieren wollen:
Code: Alles auswählen
Options -MultiViews
RewriteEngine on
RewriteRule ^(.+)/(.+)\.html$ /$1/index.php?rubric=$2
Das hatte aber bei mir mehrmals und bei verschiedenen Providern ganz komische Effekte, ein normales Arbeiten im Backend war nicht mehr möglich.
Lösung: Gib das Rubrkverzeichnis explizit an:
Code: Alles auswählen
Options -MultiViews
RewriteEngine on
RewriteRule ^_rubric/(.+)\.html$ /_rubric/index.php?rubric=$1
Wenn du mehrere Rubrikverzeichnisse hast - in diesem Fall _rubric, _Home, _sitemap, _subrubric, mod_search - sähe die .htaccess-Datei so aus:
Code: Alles auswählen
Options -MultiViews
RewriteEngine on
RewriteRule ^_home/(.+)\.html$ /_home/index.php?rubric=$1
RewriteRule ^_rubric/(.+)\.html$ /_rubric/index.php?rubric=$1
RewriteRule ^_subrubric/(.+)\.html$ /_subrubric/index.php?rubric=$1
RewriteRule ^_sitemap/(.+)\.html$ /_sitemap/index.php?rubric=$1
RewriteRule ^mod_search/(.+)\.html$ /mod_search/index.php?rubric=$1
Jetzt wirst du vielleicht einwerfen, "das ist ja blöd, da muss ich später immer auch die .htaccess anpassen, wenn ich ein neues Rubrikverzeichnis anlege, bspw. indem ich ein weiteres Modul einsetze!!". Da hättest du völlig Recht! Aber auch dafür gibt's 'ne Lösung. Meine sieht so aus, dass ich den Namen von Rubrikverzeichnissen (gilt dann auch für Module, die als Rubrik angesprochen werden) nie mit einem Unterstrich (_) beginnen lasse, sodass ich ALLE nicht mit Unterstrich beginnenden URLs umschreibe - hier die entspr. .htaccess mit zusätzlich den Fehlerabfangseiten:
Code: Alles auswählen
Options -MultiViews
RewriteEngine on
RewriteRule ^([^_].+)/(.+)\.html$ /$1/index.php?rubric=$2
ErrorDocument 401 http://www.domain.tld/de/index.php?rubric=Home_de
ErrorDocument 402 http://www.domain.tld/de/index.php?rubric=Home_de
ErrorDocument 403 http://www.domain.tld/de/index.php?rubric=Home_de
ErrorDocument 404 http://www.domain.tld/de/index.php?rubric=Home_de
So, jetzt zu den Anpassungen an der Menü-Erzeugung.
1. Bei mod_menu (von MarkusR / conpresso4.de):
Siehe oben in diesem Thread (
http://community.conpresso.de/viewtopic ... 9293#19293), allerdings können die Zeilenzahlen abweichen. Wenn die von euch benutzte Version von mod_menu diese Option bereits bietet, sollte in den Moduleinstellungen "Link zur Rubrik" auf "Rubrik-Name" eingestellt sein, nicht auf "Rubrik-Nummer".
2. Bei Einsatz von printnavigation():
Da habe ich die Zeilen 97 und 102 der Datei /_include/printnavigation.inc.php geändert von
Code: Alles auswählen
$link = BASE_URL.$v['rubric']['directory'].'/index.php/'.urlencode($v['rubric']['name']);
bzw.
Code: Alles auswählen
$link = BASE_URL.$v['rubric']['directory'].'/index.php?rubric='.urlencode($v['rubric']['name']);
zu beidesmal
Code: Alles auswählen
$link = BASE_URL.$v['rubric']['directory'].'/'.urlencode($v['rubric']['name'].'.html');
(Leider habe ich zurzeit keinen Zugriff auf das System, wo ich die angepasste printnavigation.inc.php im Einsatz habe - keine FTP-Daten. Aber wenn ich mich nicht vollkommen täusche, müsste das die vorgenommene Änderung sein - ich lass' mich gerne berichtigen)