themarcos
Goto Top

.htaccess Umschreibung dynamischer IDs in CMS

Hallo zusammen

Ich habe für meine Contao-Website eine PHP-Datei geschrieben, welche mir für jedes Mitglied eine eigene Profilseite darstellt. Das Unschöne daran ist momentan noch, dass die URL jetzt mit /profil.html?id=10 im Browser angezeigt wird. Um die ganze Sache etwas suchmaschinenoptimierter zu gestalten, wollte ich die URL mit .htaccess umschreiben:

Code:

RewriteRule ^([^.]*)\.([^.]*)\.html$ /profil.html?id=$2 [QSA,PT,L]

Somit könnte ich die Seite ja z.B. wie folgt aufrufen: /mitglied.10.html ($2 wird mit der ID 10 ersetzt. Weitere Infos hier http://www.modrewrite.de/mod-rewrite/beispiele/statische-url/)

Leider funktioniert diese Weiterleitung nicht. Es erscheint die Meldung: Seite nicht gefunden.
Ich vermute stark, dass Contao das Aufrufen blockiert, da es diese Seite im CMS nicht gibt.

Code:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .*\.html$ index.php [L]

Ich habe dann meine Code-Zeile mit RewriteEngine On ganz oben auf Zeile 1 bei der .htaccess platziert. Leider werde ich aber auch so immer zur 404-Seite weitergeleitet.


Wie kann ich beide Code-Zeilen in einer .htaccess verwenden damit sie sich gegenseitig nicht in die Quere kommen?


Vielen Dank für eure Hilfe und Gruss
Marco

Content-Key: 225330

Url: https://administrator.de/contentid/225330

Printed on: April 20, 2024 at 14:04 o'clock

Member: colinardo
colinardo Dec 26, 2013 updated at 11:31:32 (UTC)
Goto Top
Hallo Marco,
hast du den Abschnitt Suchmaschinenfreundliche URLs verwenden in der Installationsanleitung schon mal gelesen ?:
Wenn Sie einen Apache-Webserver haben und mod_rewrite verwenden dürfen, können Sie Contao dazu veranlassen, suchmaschinenfreundliche URLs zu generieren, die wie statische HTML-Seiten aussehen. Die dazu benötigten Rewrite-Regeln sind in der .htaccess.default-Datei im Contao-Verzeichnis gespeichert. Benennen Sie diese Datei um in .htaccess, damit sie vom Apache-Server erkannt wird, und rufen Sie anschließend das Modul "Einstellungen" im Contao-Backend auf. Wählen Sie die Option "URLs umschreiben" in der Gruppe "Frontend-Einstellungen" aus und speichern Sie Ihre Änderungen. Contao generiert jetzt statische URLs wie z.B. home.html anstatt index.php?id=12.
Grüße Uwe
Member: TheMarcoS
TheMarcoS Dec 27, 2013 at 14:38:25 (UTC)
Goto Top
Hallo Uwe

Danke für deine Antwort.
Ja, ich habe bereits bei Contao URLs-Umschreiben aktiviert. Diese Einstellung macht, dass das index.php wegfällt. Das betrifft aber nur die Seiten von Contao. Ich habe aber auf der Contao-Seite profil.html nun ein PHP Script eingebunden, welches mir je nach ID die entsprechenden Mitglieds-Daten anzeigt. Es steht also /profil.html?q=10 Diese, von mir erzeugte GET-Variable möchte ich auch noch überschreiben.

Ich hoffe, ich konnte meinen Sachverhalt so noch etwas verständlicher erklären.

LG
Marco
Member: colinardo
colinardo Dec 27, 2013 at 17:07:38 (UTC)
Goto Top
Hallo Marco,
bin jetzt nicht der Contao-Spezi aber ich hab mir das System mal angeschaut, denke das es hier mit einem einfachen Rewrite nicht getan ist, da Contao die Seite aus dem letzten Teil der URL extrahiert. Dazu müsstest du eine benutzerdefinierte Funktion in das System einhängen,um die Systemfunktionen generateFrontendUrl und getPageIdFromUrl zu ergänzen, wie hier geschildert:
http://de.contaowiki.org/Strukturierte_URLs

Grüße Uwe