De:Freundliche URLs

From MODx Wiki

Jump to: navigation, search

Contents

Hintergrund

URLs sehen und benutzen geschieht jeden Tag im Internet. Die Leute teilen URLs in Chats,E-Mails, Mailinglisten etc.. Wäre es nicht schön, wenn man zumindest ansatzweise erkennen könnte was hinter einer URL steckt? Und genau darum gehts bei freundlichen URLs. Freundliche URLs werden auch oft als von Menschen lesbare URLs bezeichnet - anstatt also z.B. example.com/index.php?id=123 sieht die URL dann so aus: example.com/index.php?page=mein-blog-post-ueber-modx und mit etwas Serverseitiger Hilfe kannst du sogar example.com/mein-blog/post-ueber-modx.html erreichen. Suchmaschinen prüfen auch wie URLs formatiert sind und darum nennt man freundliche URLs auch Suchmaschinenfreundliche URLs oder SEO URLs. Du kannst dir z.B. Googles Richtlinien hier durchlesen. Im Folgenden wird erklärt wie du verschiedene Ebenen von suchmaschinenfreundlichen URLs in MODx verwendest.

Freundliche URLs / SEO (Search Engine Optimized) URLs

Wenn du oben Googles Richtlinien für Webmaster gelesen hast, dann ist dir wahrscheinlich aufgefallen, dass dort stand: "Don't use "&id=" as a parameter in your URLs, as we don't include these pages in our index." ("Benutzen Sie nicht "&id=" als Parameter in Ihren URLs, da wir diese nicht indizieren.")

Derzeit verwendet MODx index.php?id=123 um URLs zu erzeugen - aus Google-Sicht also durchgefallen. Aber natürlich gibt es eine Möglichkeit das zu beheben! Und so gehts:

  1. Melde dich im MODx Manager an.
  2. Im Manager gehe zu "Werkezuge" -> "Konfiguration" (oder "Administration" -> "System Einstellungen" bei älteren Versionen als 0.9.5)
  3. Dort wechsle in den Benutzerfreundliche Urls Tab.
  4. Stelle "Benutzerfreundliche URLs nutzen" auf "Ja".
  5. Ändere "Prefix für benutzerfreundliche URLs" zu "index.php?q=" (oder index.php?seite= etc.)
  6. Klick auf "Speichern" um die Änderungen zu speichern.
  7. Fertig! Geh auf deine Seite und schau dir die URLs an. Aus "id" sollte jetzt "q" oder "seite" oder was auch immer du eingestellt hast geworden sein. Google hat jetzt einen neuen Freund: deine URLs.

...zumindest sollte man das meinen, stimmts? Wenn man mal genauer in die Richtlinien schaut fällt folgender Absatz auf: "If you decide to use dynamic pages (i.e., the URL contains a "?" character), be aware that not every search engine spider crawls dynamic pages as well as static pages. It helps to keep the parameters short and the number of them few." ("Wenn Sie sich entscheiden dynamische Seiten (erkenntlich z.B. an einem ? in der URL) zu benutzen, so sollten Sie sich im klaren sein, dass nicht jede Suchmaschine dynamische Seite so gut wie statische verarbeitet. Es ist hilfreich die Parameter kurz zu halten und die Anzahl der dynamischen Seiten gering") Wenn du also sichergehen willst das alle deine Seiten vollständig indiziert werden schau dir den Abschnitt Freundliche URLs mit mod_rewrite an.

Freundliche URLs ohne mod_rewrite

Ok, wenn du also schon gemacht hast was in Freundliche URLs beschrieben wurde hast du jetzt URLs die etwa so aussehen: www.example.com/index.php?q=123. Aber wie bekomme ich jetzt URLs wie www.example.com/index.php?q=my-blog-post-about-modx fragst du? Wir sind nicht weit weg. Hier ist die Anleitung:

  1. Führe alle Schritte durch, die im Abschnitt Freundliche URLs beschrieben wurden.
  2. Bearbeite ein paar Dokumente und fülle das Alias-Feld aus.
  3. Fertig! Wenn du dir jetzt die geänderten Seiten anschaust, sollte aus index.php?q=123 jetzt index.php?q=dein-alias geworden sein.

Freundliche URLs mit mod_rewrite

Wenn du richtig freundliche URLs benutzen willst, brauchst du mod_rewrite-Unterstützung auf deinem Server. Hier sind die einzelnen Schritte, wie du das einrichtest:

  1. IM MODx-Hauptordner solltest du eine Datei ht.access finden. In dieser Datei sind die Einstellungen für das URL-Umschreibsystem gespeichert. Eine weitere ist im /manager Ordner.
  2. Benenne beide Dateien in .htaccess um.
  3. Öffne die Datei im Hauptordner in einem Editor.
  4. Installationspfad anpassen:
    1. RewriteBase / wenn MODx im Hauptordner der Domain installiert ist
    2. RewriteBase /ordner wenn MODX in einem Unterordner mit dem Namen "ordner" liegt.
  5. Wenn du MODx in einen Unterordner installiert hast benötigst du vielleicht auch noch die folgenden Änderungen:
    1. Ändere RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] zu RewriteRule ^(.*)$ /ordner/index.php?q=$1 [L,QSA]
  6. Wenn du eine frühere Version als 0.9.5 verwendest und dein Server einen Fehler (500) anzeigt, musst du vielleicht auch die folgenden Zeilen auskommentieren (ein # an den Zeilenanfang setzen).
    1. php_flag zlib.output_compression On
    2. php_value zlib.output_compression_level 5
  7. Wenn du mit einer früheren Version als 0.9.5 noch Probleme hast kann es nützlich sein, folgende Zeilen auszukommentieren
    1. ExpiresActive On
    2. ExpiresByType image/gif A2592000
    3. ExpiresByType image/jpeg A2592000
    4. ExpiresByType image/png A2592000
    5. BrowserMatch "MSIE" brokenvary=1
    6. BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1
    7. BrowserMatch "Opera" !brokenvary
    8. SetEnvIf brokenvary 1 force-no-vary
  8. Speichere die Datei und lade sie in das MODx-Hauptverzeichnis.
    1. Du solltest die Datei nicht mit dem Windows-Editor bearbeiten. Du kannst die Datei dann nicht als .htaccess speichern - benutze statt dessen ".htaccess" im Dateinamenfeld und die Datei sollte sich speichern lassen. Oder lade die Datei auf den Server hoch und ändere den Namen in deinem FTP Client.
  9. Melde dich am Manager an.
  10. Im Manager gehe zu "Werkzeuge" -> "Konfiguration" (oder "Administration" -> "System Einstellungen" bei älteren Versionen als 0.9.5)
  11. Dort wechsle in den Benutzerfreundliche URLs Tab.
  12. Stelle "Benutzerfreundliche URLs nutzen" auf "Ja".
  13. Wenn im Feld "Präfix für benutzerfreundliche URLs" etwas steht, lösche es.
  14. Stelle "Suffix für benutzerfreundliche URLs" auf .html.
  15. Stelle "Aliasnamen" auf "Ja".
  16. Speichere die Änderungen.
  17. Fertig! Bearbeite ein paar Dokumente und fülle das "Alias"-Feld aus. Wenn du dir nun die URL auf der Seite anschaust, sollte dort so etwas wie www.example.com/alias.html stehen.


Beispiel einer .htaccess Datei

Das ist die Beispieldatei für MODx wenn es im Ordner "modx" installiert ist.

RewriteEngine On
RewriteBase /modx
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Groß-/Kleinschreibung in URLs ignorieren

Wenn deine URLs Groß-/Kleinschreibung nicht beachten sollen, ändere folgendes in der .htacces Datei:

Ersetze:

  • RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Mit:

  • RewriteRule ^(.*)$ index.php?q=$1 [L,QSA,NC]

Füge also einfach NC zu den URLs hinzu.

Benutzerfreundliche Aliaspfade

Ok, ok.. war ja ganz interessant und lehrreich bis jetzt, aber ich habe einen Seitenbaum der etwa so aussieht:

  • Blog
    • Autos
      • Wusstest du schon, dass ein Auto vier Reifen hat?
    • Mädchen
  • Über mich
  • Etc

Wie bekomme ich jetzt eine URL wie www.example.com/Blog/Autos/Wusstest-du-schon-dass-ein-Auto-vier-Reifen-hat fragst du dich?

So gehts:

  1. Zuerst aktiviere Freundliche URLs mit mod_rewrite
  2. Füge einen <base href="[(site_url)]" /> Tag im Kopf deines Templates ein.
  3. Gehe im Manager zu den Einstellungen für Benutzerfreundliche URLs.
  4. Stelle "Benutze benutzerfreundliche Aliaspfad-Angaben" auf "Ja".
  5. Stelle "Doppelte Aliase zulassen" auf "Ja".
  6. Speichere deine Änderungen.
  7. Fertig! Wenn du jetzt deine Seite besuchst, hast du "virtuelle Ordner" auf deinem Webspace - enstprechend sollten die URLs aussehen.

Anmerkung: Wenn du freundliche Alias-Pfade verwendest funktionieren einige Snippets vielleicht nicht korrekt und du könntest Probleme beim Einbinden deiner CSS-Dateien und Bilder bekommen. Dass passiert weil dein Browser bei URLs wie /Blog/Autos denkt es sind Unterordner und wenn du Pfade zu Dateien relativ angibst wird der Browser die Dateien im nicht existenten Ordner Autos suchen. Um das zu reparieren solltest du [(base_url)] vor Pfade setzen und Snippet-Entwickler sollten immer $modx->config['base_url'] benutzen wenn sie Links manuell erzeugen. Das ist nicht notwendig, wenn du Links mit [~ID~] erzeugst oder in Snippets die MODx-API verwendest (makeURL).

Personal tools