Sie sind nicht angemeldet.


Jobs im Team gesucht!   Anime Manga News Seasons   Creative Corner Bereich
  • »ChrisID« ist männlich
  • »ChrisID« ist der Autor dieses Themas

Beiträge: 1 724

Beruf: Student (Informatik)

Level: 46 [?]

Erfahrungspunkte: 5 255 829

Nächstes Level: 6 058 010

Danksagungen: 105

  • Nachricht senden

1

Mittwoch, 10. April 2013, 22:01

[PHP] Search Engine Optimization (SEO)

  • Vorwort

    • Worum geht es in diesem Tutorial
      Grundsätzlich geht es in diesem Tutorial darum, wie man mit Hilfe von mod_rewrite die dynamischen URLs einer Website als statische URLs maskiert und so suchmaschinenfreundlicher macht. Diese als statisch maskierten URLs werden dann mit PHP weiterverarbeitet, um die angegeben Parameter wie GET-Parameter einer dynamischen URL verwenden zu können.
    • Was bedeutet Search Engine Optimization (SEO)?
      Search Engine Optimiziation (SEO; dt.: Suchmaschinenoptimierung) bedeutet grob, dass eine Website so gestaltet wird, dass sie ein möglichst hohes Ranking in einer Suchmaschine (wie z.B. Google) erhält. Dazu kann eine Website an verschiedenen Stellen optimiert werden. So können Suchmaschinen z.B. mit statischen URLs besser umgehen, als mit dynamischen. Für eine umfangreiche Website sind aber dynamische URLs unverzichtbar. Daher kommen an dieser Stelle maskierte URLs zum Einsatz.
  • Tutorial

    • Statische und dynamische URLs
      Dynamische URLs enthalten GET-Parameter, welcher in der Superglobalen $_GET gespeichert werden und so im Programmverlauf genutzt werden.
      Ein einfaches Beispiel wäre das Aufrufen einer News-Seite, auf der ein durch eine ID bestimmter Eintrag angezeigt wird. Die URL dazu könnte so lauten:
      http://www.domain.tld/index.php?page=news&id=5

      Eine statische URL, mit der ebenfalls eine News-Seite mit einem bestimmten Eintrag aufgerufen wird, könnte dagegen so aussehen:
      http://www.domain.tld/news/5

      Die statische URL ist nicht nur optisch ansprechender, sondern auch suchmaschinenfreundlicher. Um aber weiterhin Parameter an den Server übermitteln zu können, müssen dynamische URLs als statische URLs maskiert werden.
    • mod_rewrite
      Damit man beim Aufruf einer maskierten URL nicht auf ein nicht vorhandenes Verzeichnis geleitet wird und so eine Fehlermeldung erhält, müssen alle Aufrufe auf eine einzige PHP-Datei weitergeleitet werden. Ausnahme sollen aber Aufrufe sein, die auf vorhandene Verzeichnisse und Dateien weiterleiten.
      An dieser Stelle kommt das Apache-Modul mod_rewrite ins Spiel. Die Angaben dazu trägt man in eine .htaccess Datei ein:

      Quellcode

      1
      2
      3
      4
      5
      6
      7
      
      RewriteEngine On
      RewriteBase /
      
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      
      RewriteRule ^(.*)$ index.php [L]


      Quellcode

      1
      
      RewriteEngine On
      Hiermit wird das mod_rewrite Modul gestartet.

      Quellcode

      1
      
      RewriteBase /
      RewriteBase bezeichnet das Verzeichnis, auf das sich die folgenden Regeln bezieht. / bezeichnet dabei das root Verzeichnis.
      Liegt die .htaccess sowie die Datei, auf die Aufrufe weitergeleitet werden (hier: index.php) in einem Unterverzeichnis, muss das Verzeichnis ausgehend vom root Verzeichnis angegeben werden: /sub/dir/

      Quellcode

      1
      2
      
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      Dies sind Bedingungen, die erfüllt sein müssen, damit die folgende Weiterleitungsregel erfolgt. !-f bedeutet, dass die aufgerufene URL keine tatsächlich vorhandene Datei (file) sein darf, !-d ist so ähnlich, bezieht sich aber auf Verzeichnisse (directory)

      Quellcode

      1
      
      RewriteRule ^(.*)$ index.php [L]
      Dies bezeichnet die eigentliche Weiterleitungs-Regel, welche ausgeführt wird, wenn alle vorausgegangenen Bedingungen erfüllt sind. In diesem Fall würden die Aufrufe auf nicht vorhandene Verzeichnisse und Dateien auf die index.php weitergeleitet werden. Im Adressfeld des Browsers bleibt aber die maskierte URL bestehen.
    • Weiterverarbeitung mit PHP
      Nachdem die Anweisungen für das mod_rewrite Modul fertig sind, müssen die maskierten URLs aber noch in der index.php verarbeitet werden, damit man die Parameter im weiteren Programmverlauf verwenden kann. Dazu kann man die Funktion explode() verwenden:

      PHP-Quelltext

      1
      
      $params explode('/'$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);

      Dabei wird die maskierte URL in ihre Bestandteile, getrennt durch / aufgeteilt.
      Für die Beispiel-URL http://www.domain.tld/news/5 hätte das Array folgenden Aufbau (Ausgabe durch print_r() ):

      Quellcode

      1
      
      Array ( [0] => www.domain.tld [1] => news [2] => 5 

      Mit $params[1] erhält man den selben Wert wie durch $_GET['page'] bei der dynamischen URL http://www.domain.tld/index.php?page=news&id=5, ebenso würde $params[2] den selben Wert haben wie $_GET['id']. Die Parameter kann man dann wie gewohnt im weiteren Programm-Verlauf verwenden.
  • Nachwort

    Wenn ihr Fragen habt, könnt ihr sie hier im Thema stellen. Achtet aber bitte auf eine verständliche Fragestellung.
    Solltet ihr Fehler entdeckt haben oder habt ihr Anregungen, teilt sie mir bitte per PN mit.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »ChrisID« (11. April 2013, 18:19)


Es hat sich bereits 1 registrierter Benutzer bedankt.

Benutzer die sich bedankten:

KaZaA (10.04.2013)

Ähnliche Themen

Verwendete Tags

PHP, SEO, Tutorial

Social Bookmarks

Thema bewerten