Wie schon in einem anderen Artikel beschrieben, mögen Suchmaschinen doppelten Content (Inhalt) nicht sehr gerne. Mir fiel allerdings auf, dass Plugins für Community Framework in jeder Endanwendung nutzbar sind.
Bei einer Endanwendung mag das egal sein, da hier das Plugin auch nur von dieser Endanwendung aus aufgerufen werden kann. Sind es jedoch mehrere Endanwendungen, kann das Plugin von jeder aus aufgerufen werden und stellt somit dieselben Inhalte unter verschiedenen Endanwendungen und damit auch unter anderen Adressen bereit.
Um das zu umgehen und suchmaschinenopmitiert (SEO) darzustellen, kann man z.B. mit mod_rewrite unter Apache oder vergleichbarem unter IIS, Lighttpd und wie sie alle heißen, arbeiten.
Da ich selbst bekannterweise den Apache Webserver nutze, werde ich folgend nur auf diesen eingehen.
Ziel der Umschreibung ist es, bei einem Plugin, das den Aufruf über domain.tld/index.php?page=ExamplePlugin macht, auf domain.tld/ea2/index.php?page=ExamplePlugin umzuleiten. Damit würden auch Aufrufe von domain.tld/example/index.php?page=ExamplePlugin auf domain.tld/ea2/index.php?page=ExamplePlugin umgeleitet werden, so dass das Plugin wirklich nur noch im Verzeichnis /ea2 aufgerufen wird.
Hierbei kann man mit der globalen Variable {QUERY_STRING} in mod_rewrite arbeiten. In dieser Variable werden alle Informationen hinter dem ? in der URL gespeichert. Diese muss dann verglichen werden, ob sich darin die Variable "page" mit dem Inhalt "ExamplePage" handelt. Wenn das so ist, wird man entsprechend ins Verzeichnis /ea2 weitergeleitet.
Der Code hierfür lautet wie folgt:
Zur Erklärung der Zeilen:
Alles zwischen Zeile 1 und 5 wird nur dann eingelesen, wenn das Modul mod_rewrite in der Webserver-Konfiguration aktiviert ist.
Zeile 2: Das Modul wird eingeschaltet, so dass es Umschreibungen vornimmt.
Zeile 3: "RewriteCond" steht für "rewrite condition", was übersetzt etwa "Umschreibungsbedingung" heißt. Dieser Teil muss demnach erfüllt sein, damit die "RewriteRule", die "Umschreibungsregel" in Zeile 4 durchgeführt werden kann.
Es wird der oben genannte {QUERY_STRING} überprüft, ob er mit "page=ExamplePlugin" beginnt. Das (.*) danach bedeutet, dass hier noch eine beliebige Zeichenkette folgen kann, z.B. eine Session oder andere Teile der Plugin-Seite z.B.
Zeile 4: Wenn die Bedingung erfüllt ist, wird die Umschreibung vorgenommen. In diesem Falle heißt das, dass sowohl ein Link, der nur den {QUERY_STRING} enthält (z.B.: domain.tld/?page=ExamplePlugin) als auch ein Link, der mit der index.php beginnt (z.B.: domain.tld/index.php?page=ExamplePlugin), umgeschrieben wird. Dieser Link wird dann in das entsprechend gewünschte Verzeichnis (hier /ea2) mit einer index.php umgeschrieben (nicht zwingend notwendig, allerdings schöner und so, wie es normal in Community Framework gehandhabt wird) und der {QUERY_STRING} angehängt, damit die Zielseite genau dasselbe ist, wie die gewünschte Seite, nur eben im neuen Verzeichnis.
Den entsprechenden Code muss man lediglich als Datei namens ".htaccess" (ohne "") im Wurzelverzeichnis der Domain speichern, so dass sie unter domain.tld/.htaccess aufrufbar wäre (standardmäßig ist ein Aufruf nicht möglich).
Ich hoffe, dass diese kleine Einführung in mod_rewrite mit RegEx niemanden überfordern wird, ansonsten sind Fragen und Feedback gerne gesehen
Bei einer Endanwendung mag das egal sein, da hier das Plugin auch nur von dieser Endanwendung aus aufgerufen werden kann. Sind es jedoch mehrere Endanwendungen, kann das Plugin von jeder aus aufgerufen werden und stellt somit dieselben Inhalte unter verschiedenen Endanwendungen und damit auch unter anderen Adressen bereit.
Um das zu umgehen und suchmaschinenopmitiert (SEO) darzustellen, kann man z.B. mit mod_rewrite unter Apache oder vergleichbarem unter IIS, Lighttpd und wie sie alle heißen, arbeiten.
Da ich selbst bekannterweise den Apache Webserver nutze, werde ich folgend nur auf diesen eingehen.
Ziel der Umschreibung ist es, bei einem Plugin, das den Aufruf über domain.tld/index.php?page=ExamplePlugin macht, auf domain.tld/ea2/index.php?page=ExamplePlugin umzuleiten. Damit würden auch Aufrufe von domain.tld/example/index.php?page=ExamplePlugin auf domain.tld/ea2/index.php?page=ExamplePlugin umgeleitet werden, so dass das Plugin wirklich nur noch im Verzeichnis /ea2 aufgerufen wird.
Hierbei kann man mit der globalen Variable {QUERY_STRING} in mod_rewrite arbeiten. In dieser Variable werden alle Informationen hinter dem ? in der URL gespeichert. Diese muss dann verglichen werden, ob sich darin die Variable "page" mit dem Inhalt "ExamplePage" handelt. Wenn das so ist, wird man entsprechend ins Verzeichnis /ea2 weitergeleitet.
Der Code hierfür lautet wie folgt:
Alles zwischen Zeile 1 und 5 wird nur dann eingelesen, wenn das Modul mod_rewrite in der Webserver-Konfiguration aktiviert ist.
Zeile 2: Das Modul wird eingeschaltet, so dass es Umschreibungen vornimmt.
Zeile 3: "RewriteCond" steht für "rewrite condition", was übersetzt etwa "Umschreibungsbedingung" heißt. Dieser Teil muss demnach erfüllt sein, damit die "RewriteRule", die "Umschreibungsregel" in Zeile 4 durchgeführt werden kann.
Es wird der oben genannte {QUERY_STRING} überprüft, ob er mit "page=ExamplePlugin" beginnt. Das (.*) danach bedeutet, dass hier noch eine beliebige Zeichenkette folgen kann, z.B. eine Session oder andere Teile der Plugin-Seite z.B.
Zeile 4: Wenn die Bedingung erfüllt ist, wird die Umschreibung vorgenommen. In diesem Falle heißt das, dass sowohl ein Link, der nur den {QUERY_STRING} enthält (z.B.: domain.tld/?page=ExamplePlugin) als auch ein Link, der mit der index.php beginnt (z.B.: domain.tld/index.php?page=ExamplePlugin), umgeschrieben wird. Dieser Link wird dann in das entsprechend gewünschte Verzeichnis (hier /ea2) mit einer index.php umgeschrieben (nicht zwingend notwendig, allerdings schöner und so, wie es normal in Community Framework gehandhabt wird) und der {QUERY_STRING} angehängt, damit die Zielseite genau dasselbe ist, wie die gewünschte Seite, nur eben im neuen Verzeichnis.
Den entsprechenden Code muss man lediglich als Datei namens ".htaccess" (ohne "") im Wurzelverzeichnis der Domain speichern, so dass sie unter domain.tld/.htaccess aufrufbar wäre (standardmäßig ist ein Aufruf nicht möglich).
Ich hoffe, dass diese kleine Einführung in mod_rewrite mit RegEx niemanden überfordern wird, ansonsten sind Fragen und Feedback gerne gesehen
649 mal gelesen
Black Rider -
Man braucht auch keinen direkten Zugriff auf die Apache-Konfiguration. Dennoch sollte zuerst die Abfrage angegeben werden, ob das entsprechende Modul auch aktiv ist.