[BETA] SEO phpBB3

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
dieweltist
Mitglied
Beiträge: 1966
Registriert: 25.07.2006 13:28
Wohnort: Thüringen
Kontaktdaten:

Beitrag von dieweltist »

@Dave danke. Der Sinn mit der .htaccess ist der, wie ich am Schluss schrieb. Nämlich dass alle solche URLs, wie die vorletzte, jeweils in eine solche umgewandelt werden, wie die letzte URL in meinem Beitrag. Klicke doch auf diese drauf und Du siehst, dass eben dieser Beitrag korrekt aufgerufen wird. Das ist das Prinzip.

Falls miene Rewrite Rule funktioniert, kann jeder wählen, welche Variante der Fehlerbehebung er umsetzen möchte. Oder beide, dann können auch sämtliche URLs aufgerufen werden, wenn die Theadseitenangabe (bspw. -s30) in der URL fehlt.

Es lohnt sich übrigens meines Erachtens sowieso, die Syntax von Mod Rewrite zu erlernen. Man kann nämlich viel damit machen, um URLs wunschgemäß anzupassen. Wie das System jeweils URLs ausgibt, darauf hat Mod Rewrite keinen Einfluss. Sondern nur, dass URLs, die man aufruft, entsprechend umgewandelt werden in so ein Muster, die das System versteht.
Dave
Mitglied
Beiträge: 2085
Registriert: 25.05.2003 15:03
Wohnort: Wuppertal

Beitrag von Dave »

Da meine eigentlich die richtige ist (vom gewünschten code her) würde ich das vorschlagen ;) Weil was neues hinzufügen um nen bug zu beheben finde ich nen komischen weg :D
Benutzeravatar
dieweltist
Mitglied
Beiträge: 1966
Registriert: 25.07.2006 13:28
Wohnort: Thüringen
Kontaktdaten:

Beitrag von dieweltist »

Die .htaccess habe ich grundlegend überarbeitet, weil in dieser zahlreiche Anfängerfehler waren, obwohl ich selbst auch noch ein Mod-Rewrite-Anfänger bin. Da waren jeweils im ersten Teil unnötige Klammern, die weder eine Mengenangabe enthielten, noch im zweiten Teil der Rewrite Rule eine Entsprechung hatten.

Die doch sehr "gefräßige" Mengenangabe .* wurde meines Erachtens oftmals ziemlich unüberlegt angewendet, obwohl es da jeweils besser gewesen wäre, wenigstens das Slash / auszuschließen und/oder die Mengenangabe auf 1 bis unendlich zu begrenzen. Auch wurde stets vergessen, jeweils im ersten Teil der Rewrite Rule den Punkt . vor html zu escapen mit einem Backslash \.

Code: Alles auswählen

RewriteEngine on
RewriteBase /
RewriteRule ^[^/]*-f([0-9]*)/[^/]*-t([0-9]+)-s([0-9]+)\.html viewtopic.php?f=$1&t=$2&start=$3&%{QUERY_STRING} [L]
RewriteRule ^[^/]*-f([0-9]*)/[^/]*-t([0-9]+)\.html viewtopic.php?f=$1&t=$2&%{QUERY_STRING} [L]
RewriteRule ^[^/]*-f([0-9]*)/index-s([0-9]+)\.html viewforum.php?f=$1&start=$2&%{QUERY_STRING} [L]
RewriteRule ^[^/]*-f([0-9]*)/ viewforum.php?f=$1&%{QUERY_STRING} [L]
RewriteRule ^[^/]*-f([0-9]*) viewforum.php?f=$1&%{QUERY_STRING} [L]
Wenn ich mich jetzt nicht irre, müsste man die letzten beiden Zeilen durch eine ersetzen können, indem man angibt, dass der Slash ein oder kein mal vorhanden sein darf.

Code: Alles auswählen

RewriteRule ^[^/]*-f([0-9]*)/? viewforum.php?f=$1&%{QUERY_STRING} [L]
Und weil weitere Zeichen folgen dürfen, und somit auch ein Slash /, kann diese Angabe eigentlich sogar ganz entfallen.

Code: Alles auswählen

RewriteRule ^[^/]*-f([0-9]*) viewforum.php?f=$1&%{QUERY_STRING} [L]
Die Angabe, dass jeweils der {QUERY_STRING} mit übergeben werden soll (das ist derjenige Teil der URL, der hinter dem Fragezeichen ist), kann man einfacher mit der Angabe QSA (Query String Append) bewerkstelligen. Das habe ich jetzt hier gelesen: Klick! (Auf dieser Seite nach SESSIONID suchen!)

Code: Alles auswählen

RewriteEngine on
RewriteBase /
RewriteRule ^[^/]*-f([0-9]*)/[^/]*-t([0-9]+)-s([0-9]+)\.html viewtopic.php?f=$1&t=$2&start=$3&% [L,QSA]
RewriteRule ^[^/]*-f([0-9]*)/[^/]*-t([0-9]+)\.html viewtopic.php?f=$1&t=$2&% [L,QSA]
RewriteRule ^[^/]*-f([0-9]*)/index-s([0-9]+)\.html viewforum.php?f=$1&start=$2&% [L,QSA]
RewriteRule ^[^/]*-f([0-9]*) viewforum.php?f=$1&% [L,QSA]
Benutzeravatar
dieweltist
Mitglied
Beiträge: 1966
Registriert: 25.07.2006 13:28
Wohnort: Thüringen
Kontaktdaten:

Beitrag von dieweltist »

Mir ist aufgefallen, dass der interne Link zum Forum, der unter der Navigation ist, noch eine Nicht-SEO-URL ist.

http://forumtreff.pytalhost.de/dein-erstes-forum-f2/

http://forumtreff.pytalhost.de/viewforu ... =d&start=0


Nicht jede Seite kann über die ursprüngliche dynamische URL aufgerufen werden. Auch dadurch ist es nur noch eingeschränkt möglich, über entsprechende Einfügung von Umleitungsanweisungen in die .htaccess, weitere Möglichkeiten des Aufrufens von bestimmten Forenseiten zu kreieren. Aber auch, wenn man dabei bei den statischen URLs ansetzt, um neue URL-Umleitungen zu realisieren, funktionieren manche Muster gar nicht, die beim Nicht-SEO-phpBB3 noch funktionierten.

Auch kann ich jetzt nicht mehr zwei SEO-phpBB-Boards mit jeweils unterschiedlicher Anzeige von Beiträgen je Seite laufen lassen, was mit der Nicht-SEO-Version ohne umfangreiche Anpassungen möglich war. Sobald ich eine Seite der anderen Installation aufrufe, wird die URL nach dem Aufruf von allein zur ersten zurückgeschaltet.

Ein Forum aufrufen; funktioniert noch.
http://forumtreff.pytalhost.de/viewforum.php?f=2

Einen Thread in einem Forum aufrufen; funktioniert auch.
http://forumtreff.pytalhost.de/viewtopic.php?f=2&t=1

Einen Beitrag eines Threads eines Forums; funktioniert zwar, aber der Beitrag wird mit Anker aufgerufen. Aber die Thread-ID muss stimmen und muss somit bekannt sein. Auch muss die Angabe über die Threadseite in der URL enthalten sein, sonst führt der Link zur ersten Threadseite.
http://forumtreff.pytalhost.de/viewtopi ... =2&t=1&p=1

Einen Beitrag mit Anker eines Threads eines Forums; funktioniert nicht, es erscheint nur das Forum.
http://forumtreff.pytalhost.de/viewtopi ... t=1&p=1#p1

Einen Thread aufrufen; funktioniert.
http://forumtreff.pytalhost.de/viewtopic.php?t=1

Einen Beitrag eines Threads aufrufen; funktioniert zwar, aber der Beitrag wird mit Anker aufgerufen. Aber die Thread-id muss stimmen und muss somit bekannt sein. Auch muss die Angabe über die Threadseite in der URL enthalten sein, sonst führt der Link zur ersten Threadseite.
http://forumtreff.pytalhost.de/viewtopic.php?t=1&p=1

Einen Beitrag mit Anker eines Threads aufrufen; funktioniert nicht, es erscheint nur das Forum.
http://forumtreff.pytalhost.de/viewtopic.php?t=2&p=1#p1

Einen Beitrag aufrufen; funktioniert zwar, aber der Beitrag wird mit Anker aufgerufen.
http://forumtreff.pytalhost.de/viewtopic.php?p=1

Einen Beitrag mit Anker eines Threads aufrufen; funktioniert nicht, es erscheint nur das Forum.
http://forumtreff.pytalhost.de/viewtopic.php?p=1#p1
Zuletzt geändert von dieweltist am 25.06.2008 17:57, insgesamt 4-mal geändert.
Benutzeravatar
dieweltist
Mitglied
Beiträge: 1966
Registriert: 25.07.2006 13:28
Wohnort: Thüringen
Kontaktdaten:

Interne Links der FAQ funktionieren nicht

Beitrag von dieweltist »

Beim SEO-phpBB3 funktionieren die Links in der FAQ nicht. Es ist nicht nur bei meinem Forum so, das zur Zeit deaktiviert ist; sondern ich habe auch ein SEO-phpBB3 gefunden. Und bei diesem gehen diese internen Links auch nicht in der FAQ: Klick! Es erscheint jeweils die Forenübersicht (Indexseite).
Benutzeravatar
ill66
Mitglied
Beiträge: 315
Registriert: 08.01.2008 17:51
Kontaktdaten:

Beitrag von ill66 »

tatsache. dann hat es sicher die gleiche ursache, dass wenn ich auf Thema teilen > "Ansicht erweitern" klicke, ich auf auf die hauptseite umgeleitet werde... :\

was dave und du zur lösung meines anderen problems geschrieben hat, verunsichert mich ein bisschen^^°
Benutzeravatar
dieweltist
Mitglied
Beiträge: 1966
Registriert: 25.07.2006 13:28
Wohnort: Thüringen
Kontaktdaten:

Beitrag von dieweltist »

Stimmt; ich komme beim internen Link "Ansicht erweitern" auch auf die Übersicht- bzw. Indexsseite. Aber obwohl dieser Link bei der Nicht-SEO-Version funktionierte, hatte ich dessen Sinnhaftigkeit damals nicht erkennen können.
Schnally
Mitglied
Beiträge: 56
Registriert: 21.11.2005 17:42
Kontaktdaten:

Beitrag von Schnally »

Kann man das irgendwie ändern, so dass das mit dem Anker wieder funktioniert?
Ist ja sonst schon sinnlos, wenn man einzelne Beiträge eines Threads nicht aufrufen kann.
Benutzeravatar
dieweltist
Mitglied
Beiträge: 1966
Registriert: 25.07.2006 13:28
Wohnort: Thüringen
Kontaktdaten:

Beitrag von dieweltist »

@Schnally; das verstehe ich nicht. Was meinst Du? Einen Beitrag ohne Anker aufzurufen, ist scheinbar beim SEO-phpBB3 nicht möglich. Aber mit Anker, das funktioniert doch. Oder meinst Du die FAQ? Dort gehen die internen Links mit Anker leider nicht.
Dave
Mitglied
Beiträge: 2085
Registriert: 25.05.2003 15:03
Wohnort: Wuppertal

Beitrag von Dave »

Naja... Das nen posting direkt aufgerufen wird mit anker hat ja an sich schon seinen sinn...
Aber wenn du nen Beitrag direkt aufrufen willst ohne Anker müßtest du folgenden Code ändern:
viewtopic.php

Code: Alles auswählen

if ( isset($_GET['p']) && !$hilit_words )
{
	$post_url = generate_seourl_topic($topic_data['topic_id'], $topic_data['topic_title'], $topic_data['forum_id'], $topic_data['forum_name']);
	$post_url = generate_seo_lastpost($topic_data['topic_replies'], $post_url ) . '#p' . $post_id;
	header("HTTP/1.1 301 Moved Permanently");
	header("Location: $post_url");
	die;
}
in

Code: Alles auswählen

if ( isset($_GET['p']) && !$hilit_words )
{
	$post_url = generate_seourl_topic($topic_data['topic_id'], $topic_data['topic_title'], $topic_data['forum_id'], $topic_data['forum_name']);
	$post_url = generate_seo_lastpost($topic_data['topic_replies'], $post_url );
	header("HTTP/1.1 301 Moved Permanently");
	header("Location: $post_url");
	die;
}
Dann passt es :wink:
Antworten

Zurück zu „[3.0.x] Mods in Entwicklung“