mod_rewrite nutzen
mod_rewrite nutzen
Guten Abend,
mit Begeisterung habe ich in der Meldung vom 01.11.05 gelesen, dass u.a. als neues Feature "Administration von sprechenden Pfaden (URL Writing)" integriert wird.
Nun will ich dieses mod_rewriting nutzen, habe allerdings keine Ahnung, wie ich es aktiviere.
In welchen PHP-Dateien muss ich etwas verstellen, welchen Inhalt muss eine htaccess-Datei haben?
Danke euch!
Jürgen
mit Begeisterung habe ich in der Meldung vom 01.11.05 gelesen, dass u.a. als neues Feature "Administration von sprechenden Pfaden (URL Writing)" integriert wird.
Nun will ich dieses mod_rewriting nutzen, habe allerdings keine Ahnung, wie ich es aktiviere.
In welchen PHP-Dateien muss ich etwas verstellen, welchen Inhalt muss eine htaccess-Datei haben?
Danke euch!
Jürgen
in php dateien an sich musst du bei deren verwendung nix ändern, deine navigationsmodule allerdings schon. die musst du z.b. so umschreiben, dass die urls statt front_content.php mit dem kategorienamen im pfad stehen - also z.B. so kategorie1/kategorie2
per .htaccess übergibst du diese kategorien an die front_content mit dem parameter path
also front_content.php?path=kategorie1/kategorie2
eine beispielhafte mod rewrite rule wäre z.b.
RewriteRule ^([^/]+)/$ front_content.php?path=$1 [QSA,L]
weitere infos zu mod rewrite an sich findest du unter www.modrewrite.de
um dir die arbeit zu ersparen kannst du alternativ die forums suche bemühen und nach "advanced modrewrite" suchen, was ein modifiziertes contenido bundle ist, welches dir die arbeit größtenteils abnimmt.
per .htaccess übergibst du diese kategorien an die front_content mit dem parameter path
also front_content.php?path=kategorie1/kategorie2
eine beispielhafte mod rewrite rule wäre z.b.
RewriteRule ^([^/]+)/$ front_content.php?path=$1 [QSA,L]
weitere infos zu mod rewrite an sich findest du unter www.modrewrite.de
um dir die arbeit zu ersparen kannst du alternativ die forums suche bemühen und nach "advanced modrewrite" suchen, was ein modifiziertes contenido bundle ist, welches dir die arbeit größtenteils abnimmt.
mod_rewrite nutzen
Danke, aber jetzt bekomme ich einen Internal Server Error.
Was genau muss ich bei $cfg['mod_rewrite']['rootdir'] angeben?
Wie rufe ich die Homepage auf, um den Startartikel anzeigen zu lassen?
Jürgen
Was genau muss ich bei $cfg['mod_rewrite']['rootdir'] angeben?
Wie rufe ich die Homepage auf, um den Startartikel anzeigen zu lassen?
Jürgen
internal server error bedeutet nix gutes - sehr wahrscheinlich ist die symlink eigenschaft bei deinem hoster nicht korrekt gesetzt, daher bricht er die htaccess ab, sobald man sie versucht einzuschalten.
weitere infos bezüglich mod rewrite bitte von den profis holen - die können dir da eher helfen, wenn es nix mit contenido an sich zu tun hat (und das hat der fehler 500 nicht)
der thread bezüglich des symlink befehles findet sich hier
die .htaccess musst du nur dahin gehend anpassen, dass das basisverzeichnis (RewriteBase) korrekt aus sicht des webbrowsers gesetzt ist, wo die front_content.php liegt
oder fall b) dein provider hat kein mod_rewrite modul in den apache geladen. achja wenn du das ganze unter einem Windows IIS probierst muss ich dich ebenfalls enttäuschen. der versteht mod rewrite nicht.
weitere infos bezüglich mod rewrite bitte von den profis holen - die können dir da eher helfen, wenn es nix mit contenido an sich zu tun hat (und das hat der fehler 500 nicht)
der thread bezüglich des symlink befehles findet sich hier
die .htaccess musst du nur dahin gehend anpassen, dass das basisverzeichnis (RewriteBase) korrekt aus sicht des webbrowsers gesetzt ist, wo die front_content.php liegt
oder fall b) dein provider hat kein mod_rewrite modul in den apache geladen. achja wenn du das ganze unter einem Windows IIS probierst muss ich dich ebenfalls enttäuschen. der versteht mod rewrite nicht.
mod_rewrite nutzen
Danke dir für die Antwort!
Ich werde mich an meinen Webspaceanbieter wenden.
Trotzdem noch die Frage nach: $cfg['mod_rewrite']['rootdir']
Und: In welcher Datei muss ich was ändern, damit die Links, die ja auf meinen Seiten nun automatisch geändert werden (Homepage/Kategorie1/Kategorie2), vorläufig in front_content.php?path=Kategorie1/Kategorie2 geändert werden?
Der Sinn der Sache ist, dass ich jetzt nicht alle Änderungen rückgängig machen müssen möchte, sondern funktionierende Links (also ohne mod_rewrite) haben möchte, solange mein Webspaceanbieter nicht reagiert hat. Die Seite soll also solange nutzbar bleiben.
Vielen Dank für deine Hilfe.
Jürgen
Ich werde mich an meinen Webspaceanbieter wenden.
Trotzdem noch die Frage nach: $cfg['mod_rewrite']['rootdir']
Und: In welcher Datei muss ich was ändern, damit die Links, die ja auf meinen Seiten nun automatisch geändert werden (Homepage/Kategorie1/Kategorie2), vorläufig in front_content.php?path=Kategorie1/Kategorie2 geändert werden?
Der Sinn der Sache ist, dass ich jetzt nicht alle Änderungen rückgängig machen müssen möchte, sondern funktionierende Links (also ohne mod_rewrite) haben möchte, solange mein Webspaceanbieter nicht reagiert hat. Die Seite soll also solange nutzbar bleiben.
Vielen Dank für deine Hilfe.
Jürgen
bei dem bündel müsste eine installations-textdatei dabei sein. bitte lies diese dir durch! umgewandelt werden die urls erst dann, wenn in der config die variable $cfg["mod_rewrite"]["use"] = 1 gesetzt ist - andernfalls kannst du deine htaccess jetzt erst einmal unschädlich machen (z.b. durch umbenennen in _.htaccess) oder auskomemntieren aller mod rewrite betreffenden regelungen.
die variable mit dem rootdir kannst du dir erstmal eh sparen, da die in den seltensten fällen angepasst werden muss! (die sagt einfach ob dem umgewandelten link noch ein verzeichnis vorangestellt werden muss von der docroot des browsers aus gesehen, falls deine contenido installation sowie die htaccess in einem unterverzeichnis liegt.
die variable mit dem rootdir kannst du dir erstmal eh sparen, da die in den seltensten fällen angepasst werden muss! (die sagt einfach ob dem umgewandelten link noch ein verzeichnis vorangestellt werden muss von der docroot des browsers aus gesehen, falls deine contenido installation sowie die htaccess in einem unterverzeichnis liegt.
mod_rewrite nutzen
Danke für den Tipp!
Mein Contenido liegt hier: root/contenido/
Die .htaccess also dort: root/contenido/cms/.htaccess
Was muss ich als Pfad angeben?
Leider lässt mich die englische Erklärung bei $cfg['mod_rewrite']['startfromroot'] auch nicht erschließen, was sich hinter dieser Einstellung verbirgt. Kannst du mir auch hier helfen?
Jürgen
Mein Contenido liegt hier: root/contenido/
Die .htaccess also dort: root/contenido/cms/.htaccess
Was muss ich als Pfad angeben?
Leider lässt mich die englische Erklärung bei $cfg['mod_rewrite']['startfromroot'] auch nicht erschließen, was sich hinter dieser Einstellung verbirgt. Kannst du mir auch hier helfen?
Jürgen
wenn deine .htaccess auch in dem cms verzeichnis liegt muss
$cfg["mod_rewrite"]["rootdir"] = '/contenido/cms/';
beinhalten - standardmäßig lege ich die .htaccess immer ein verzeichnis über das cms verzeichnis, dann stimmt der standardpfad in der config nämlich auch wieder.
$cfg["mod_rewrite"]["startfromroot"] bedeutet nur, dass wenn der wert = 1 gesetzt ist, auch der Name des Hauptbaumes in der URL mit auftaucht, wenn 0, dann startet die URL mit dem Namen der ersten Kategorie.
$cfg["mod_rewrite"]["rootdir"] = '/contenido/cms/';
beinhalten - standardmäßig lege ich die .htaccess immer ein verzeichnis über das cms verzeichnis, dann stimmt der standardpfad in der config nämlich auch wieder.
$cfg["mod_rewrite"]["startfromroot"] bedeutet nur, dass wenn der wert = 1 gesetzt ist, auch der Name des Hauptbaumes in der URL mit auftaucht, wenn 0, dann startet die URL mit dem Namen der ersten Kategorie.
mod_rewrite nutzen
Danke nochmal.
Muss es bei dir aber dann nicht $cfg["mod_rewrite"]["rootdir"] = '/contenido/'; heißen?
Und ich möchte nun nicht mod_rewrite nicht ganz ausschalten. Ich kann zwar nichts per .htaccess umschreiben lassen (bin bei Strato), aber ich möchte dennoch, dass die Links dann so aussehen: front_content.php?path=Kategorie1/Kategorie2, anstatt: front_content.php?idcatart=xx, damit die Suchmaschine auch die Wörter in den URLs erfolgreich mit den Suchbegriffen vergleichen kann.
Jürgen
Muss es bei dir aber dann nicht $cfg["mod_rewrite"]["rootdir"] = '/contenido/'; heißen?
Und ich möchte nun nicht mod_rewrite nicht ganz ausschalten. Ich kann zwar nichts per .htaccess umschreiben lassen (bin bei Strato), aber ich möchte dennoch, dass die Links dann so aussehen: front_content.php?path=Kategorie1/Kategorie2, anstatt: front_content.php?idcatart=xx, damit die Suchmaschine auch die Wörter in den URLs erfolgreich mit den Suchbegriffen vergleichen kann.
Jürgen
ja bei mir schon, da meine htaccess nicht im cms verzeichnis liegt.Muss es bei dir aber dann nicht $cfg["mod_rewrite"]["rootdir"] = '/contenido/'; heißen?
wenn du nur die urls so haben willst, wirst du deine module so anpassen müssen, dass die urls mit dne pfadangaben so rausgelassen werden. da kann dir dieses paket nicht behilflich sein.
mod_rewrite nutzen
Aber dieses Paket schreibt doch automatisch alle Links so um, dass aus "front_content.php?idcatart=xx" "/Kategorie1/Kategorie2" wird. Dann muss doch nur an der Stelle, wo dies geschieht, die Umschreibroutine geändert werden, oder irre ich?
Jürgen
Jürgen
mod_rewrite nutzen
Danke, habe ich gemacht.
Nun gibt es ein kleines Problem. Standardmäßig wird bei dieser URL: front_content.php?path=KAtegorie/Kategorie.html der erste Artikel in der Kategorie aufgerufen. Bei einem Link allerdings wird stattdessen der erste Artikel der Unterkategorie aufgerufen, also so, als wenn man dies eingeben würde: Kategorie/Kategorie2/Kategorie2.html
Hast du einen Tipp?
Jürgen
Nun gibt es ein kleines Problem. Standardmäßig wird bei dieser URL: front_content.php?path=KAtegorie/Kategorie.html der erste Artikel in der Kategorie aufgerufen. Bei einem Link allerdings wird stattdessen der erste Artikel der Unterkategorie aufgerufen, also so, als wenn man dies eingeben würde: Kategorie/Kategorie2/Kategorie2.html
Hast du einen Tipp?
Jürgen