bert: SEF URLs

Hi,

habe schon auf vielen HPs die SEF-URLs gesehen (www.seite.de/niederlassungen/hessen/frankfurt)

Wie mache ich das denn, dass bei so einer URL trotzdem immer die index.php geöffnet wird und dann eben die Seite niederlassungen/hessen/frankfurt.php included wird?

Danke und Gruß

  1. Hallo,

    habe schon auf vielen HPs die SEF-URLs gesehen (www.seite.de/niederlassungen/hessen/frankfurt)

    mir ist die Kunstabkürzung "SEF" noch nicht begegnet, ich habe im Moment auch keine Lust, danach zu recherchieren - vermutlich irgendwas mit "Seach Engine". Aber ich würde solche URLs vor allem als lesefreundlich und einprägsam bezeichnen. Also in erster Linie ein Entgegenkommen an die menschlichen Nutzer.

    Wie mache ich das denn, dass bei so einer URL trotzdem immer die index.php geöffnet wird und dann eben die Seite niederlassungen/hessen/frankfurt.php included wird?

    Meistens mit mod_rewrite, einer server-internen Abbildung der URL auf die tatsächlich vorhandenen Scripte oder statischen Seiten.

    Die triviale Methode ist natürlich, dass /niederlassungen/hessen/frankfurt ein Verzeichnis auf dem Server ist, aus dem einfach das Default-Dokument (z.B. index.html) ausgegeben wird.

    Im übrigen möchte ich auch dir die Lektüre von RFC 2606 ans Herz legen, die für anonymisierte Beispiele extra eine Reihe von Sonder-Domains definiert, so etwa example.net (wer hätte das gedacht). Wenn du nicht ein IT-Verantwortlicher der bayrischen PeCe-ServiceLine bist, solltest du deren Domain auch nicht für Beispiele "missbrauchen". Das sind die zwar bestimmt schon gewöhnt, aber davon wird's ja nicht besser.

    So long,
     Martin

    --
    Küssen ist die schönste Methode, eine Frau zum Schweigen zu bringen.
    1. mir ist die Kunstabkürzung "SEF" noch nicht begegnet, ich habe im Moment auch keine Lust, danach zu recherchieren - vermutlich irgendwas mit "Seach Engine".

      Ja, heißt Search Engine Friendly

      Die triviale Methode ist natürlich, dass /niederlassungen/hessen/frankfurt ein Verzeichnis auf dem Server ist, aus dem einfach das Default-Dokument (z.B. index.html) ausgegeben wird.

      Wie kann ich denn die URL abfangen, sodass egal welcher Rattenschwanz an meine Domain angefügt wird IMMER die index.php aus dem Hauptverzeichnis geladen wird? Hat das auch was mit mod_rewrite zu tun? Da wüsste ich jetzt nämlich nicht was zu tun ist.

      Stelle mir das so vor:

      --> URL wird abgefangen
      --> index.php aus Hauptverzeichnis wird geladen
      --> index.php liest URL komplett aus
      --> und zerlegt den String (halt immer die Wörter zwischen den '//')

      Das mit dem URL auslesen und String zerlegen bekomme ich hin, nur eben nicht, dass IMMER die index.php aus dem Hauptverzeichnis geladen wird.

      Any idea?

      Danke und Gruß

      1. Hallo,

        /niederlassungen/hessen/frankfurt ein Verzeichnis auf dem Server ist, aus dem einfach das Default-Dokument (z.B. index.html) ausgegeben wird.

        Wie kann ich denn die URL abfangen, sodass egal welcher Rattenschwanz an meine Domain angefügt wird IMMER die index.php aus dem Hauptverzeichnis geladen wird? Hat das auch was mit mod_rewrite zu tun?

        es gibt -wenn wir schon bei PHP als verwendeter Scriptsprache sind- mehrere Möglichkeiten. Mal angenommen, deine URLs sollen alle so aussehen:

        /de/thema/beitrag/unterteilung

        Nach außen kannst du das "de" sogar als Kürzel für die Sprache "verkaufen". In Wirklichkeit ist /de aber ein PHP-Script, das mit dieser URL gestartet wird und den restlichen übergebenen Pfad in $_SERVER['PATH_INFO'] zur Verfügung hat. Okay, du musst natürlich per .htaccess dafür sorgen, dass die Datei /de als PHP geparst wird, obwohl sie nicht die Extension .php hat.

        Wie du mit mod_rewrite, einem anderen Ansatz, dieses Ziel erreichst, hat Alex doch schon dargestellt.

        Ciao,
         Martin

        --
        Fische, die bellen, beißen nicht.
  2. Hallo Bert,

    habe schon auf vielen HPs die SEF-URLs gesehen (www.seite.de/niederlassungen/hessen/frankfurt)

    Du meinst wohl "SEO-URLs".

    Wie mache ich das denn, dass bei so einer URL trotzdem immer die index.php geöffnet wird

    Das Stichwort ist "mod_rewrite" (Apache-Webserver vorausgesetzt). Damit kann man die aufgerufenen URLs "umschreiben". Falls Dein Server das unterstützt, kannst Du das mit einer .htaccess-Datei mit folgendem Inhalt testen:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?foo=$1 [L]

    Die Anweisung in der 4. Zeile sorgt dafür, dass bei der Anfrage nach http://example.com/bar index.php?foo=bar aufgerufen wird. In Zeile 2 und 3 werden existierende Dateien und Verzeichnisse von der Regel ausgenommen.

    mod_rewrite erlaubt aber auch zahlreiche andere Möglichkeiten des Umschreibens, mit diesem Stichwort wirst Du jede Menge Beispiele und Erklärungen dazu finden.

    Ale×