Wie funktioniert SEO phpBB?

tas2580  

Da immer wieder die Frage kommt wie man die .htaccess ändern muss damit SEO phpBB die URLs nach einem anderen Muster wie vorgesehen ausgibt werde ich hier mal beschreiben wie das ganze funktioniert. Eins schon mal vorweg, ganz so einfach wie scheinbar viele Leute denken ist das leider nicht. Das ändern der .htaccess alleine reicht nicht um die URL Struktur zu ändern.


Durch meine phpBB Extension SEO URLs, ehemals SEO phpBB werden die URLs in einem phpBB Forum so umgeschrieben das Foren und Themen den Titel in der URL beinhalten. Damit das funktioniert sind zwei Dinge notwendig. Einmal muss phpBB dazu gebracht werden das alle Links mit dem Titel in der URL ausgegeben werden und dann muss noch der Server dazu gebracht werden das die neuen Links auch funktionieren und nicht in leere führen.

Links mit Titel ausgeben

Das größte Problem ist es phpBB dazu zu bringen, dass alle internen Links umgeschrieben werden. Das geschieht in der Datei event/listener.php, dort gibt es eine ganze Reihe an Methoden die versuchen die originalen Links die von phpBB eigentlich benutzt werden durch Links die den Titel beinhalten zu überschreiben. Leider fehlen zur Zeit noch die nötigen Events um wirklich alle Links umschreiben zu können, aber das ist ein anderes Thema. Damit der Aufbau der Links nicht immer neu gemacht werden muss habe ich dazu die Methoden generate_forum_link und generate_forum_link eingebaut. In den Methoden werden die neuen Links aus den Namen der Foren und Themen zusammen gebaut. Wenn man also die Struktur der Links ändern möchte muss man die beiden Methoden so abändern das die Links nach der gewünschten Struktur ausgegeben werden. Wer ein wenig PHP Kenntnisse hat sollte das locker hinbekommen. Hier kann title_to_url verwendet werden um die Titel so umzuwandeln das sie in einer URL verwendet werden können. Wer die Datei verändert muss allerdings bei einem Update der Extension die Änderung wieder neu machen.

URL Rewriting

Nachdem die Links umgeschrieben wurden gibt das Forum zwar die Links mit Titel in der URL aus, aber die Links sind natürlich erstmal alle ungültig und führen zu einem 404 Fehler da es die URLs ja nicht wirklich auf dem Server gibt. Damit die Links wieder funktionieren wird URL Rewriting (beim Apache mod_rewrite per .htaccess) benutzt. Hier werden bestimmte Regeln definiert die beim Aufruf einer umgeschriebenen URL die original URL aufrufen. Das Prinzip dahinter ist recht einfach, man macht einfach für jede URL einen Eintrag nach folgendem Muster in der .htaccess:

RewriteRule neue_url.html alte_url.php [L]

Vorne wird also die URL angegeben die vom Forum ausgegeben wird und hinten die echte URL die der Server aufrufen soll. Das [L] am Ende bedeutet das wenn die Regel ausgeführt wurde keine weiteren Rewrite Regeln mehr ausgeführt werden sollen.

Da man jetzt nicht für alle Foren und Themen die es im Forum gibt oder die es in Zukunft noch geben wird eine eigene Regel erstellen kann wird Regex verwendet um mehrere URLs die nach einem bestimmten Muster aufgebaut sind umzuschreiben.

RewriteRule neue_url-([0-9]*).html alte_url.php?parameter=$1 [L]

Das ([0-9]*) im vorderen Teil steht für eine beliebige Zahl die an der Stelle von $1 im hinteren Teil wieder verwendet wird. Wenn man im vorderen Teil mehrere Variablen angibt kann man die im hinteren Teil der Reihe nach aufrufen, $1 ist die erste Variable im vorderen Teil, $2 die zweite usw.

Das kann man natürlich nicht nur mit Zahlen sondern mit beliebigen Zeichen machen, mit ([a-z]*) kann man beliebige Kleinbuchstaben verwenden, ([a-zA-Z]*) steht für beliebige Klein - und Großbuchstaben. (.*) können beliebige Zeichen sein. Man sollte hier immer nur das nötigste zulassen, wenn man also weiß das nur Zahlen vorkommen sollten auch nur Zahlen zugelassen werden da es sonst schnell vorkommt das URLs umgeschrieben werden die man eigentlich gar nicht umschreiben möchte.

Kommentare


Kommentar schreiben

URLs werden automatisch umgewandelt.
[b]DEIN TEXT[/b] für Fett gedruckt
[quote]DEIN ZITAT[/quote] für Zitate
[code]DEIN CODE[/code] für Code
captcha