phpbb1.4 Links kompatibel machen mit mod_rewrite ?

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 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
Waagenbauer
Mitglied
Beiträge: 219
Registriert: 11.06.2001 02:00
Kontaktdaten:

phpbb1.4 Links kompatibel machen mit mod_rewrite ?

Beitrag von Waagenbauer »

Ich habe von 1.4 nach 2.0 geupgradet.
Die Links-Schreibweise z.B. zu Topics ist ja unterschiedlich:

Alt: .../viewtopic.php?topic=1234
Neu: .../viewtopic.php?t=1234

Ich verwende schon das Apache mod_rewrite Modul um meine Forum Suchmaschienenfreundlich zu machen:
Dadurch kann meine Seite auch mit '.../topic1234.html' ereicht werden.

Wie mache ich das mit den alten Links? Hat jemand schon etwas dazu ?
http://www.kaltmacher.de - Die Seite für PC-Freaks und Profis.
Benutzeravatar
Waagenbauer
Mitglied
Beiträge: 219
Registriert: 11.06.2001 02:00
Kontaktdaten:

Beitrag von Waagenbauer »

Ich habs grad selber herausgefunden, ist eigentlich ganz einfach:

Code: Alles auswählen

RewriteEngine on
RewriteRule viewtopic.php?topic=(.*)$ /viewtopic.php?t=$1
RewriteRule topic(.*)\.html$ /viewtopic.php?t=$1
Aus
.../viewtopic.php?topic=1234&...
und
.../topic1234.html
wird jetzt
.../viewtopic.php?t=1234

Jedenfalls funzen die Links so.
Falls ich die Regeln nicht sauber geschrieben habe, berichtigt mich bitte.
http://www.kaltmacher.de - Die Seite für PC-Freaks und Profis.
Benutzeravatar
Guido
Mitglied
Beiträge: 1307
Registriert: 06.10.2002 09:44
Wohnort: Rheinland
Kontaktdaten:

Re: phpbb1.4 Links kompatibel machen mit mod_rewrite ?

Beitrag von Guido »

Waagenbauer hat geschrieben:Ich verwende schon das Apache mod_rewrite Modul um meine Forum Suchmaschienenfreundlich zu machen:
Was ist das genau für ein Mod und wo finde ich Ihn. ich glaube der könnte interessant sein...;-)
Benutzeravatar
Chris
Mitglied
Beiträge: 110
Registriert: 29.11.2002 08:22

Beitrag von Chris »

Hi, das funtz sogar, aber irgendwie doch nicht :-?

Also, auf dem Server muß Apache laufen und das mod_rewrite aktiviert sein.
So, als nöchstes muß man in´s Hauptverzeichnis des Forums eine .htaccess erstellen, mit dem oben genannten Code als Inhalt.
Aber Vorsicht, unterstützt der Server kein mod_rewrite, dann wird der zugang per http gesperrt, was bedeutet, daß das Forum nicht mehr erreichbar ist. Um das Forum in diesem Fall wieder erreichbar zu machen muß man die .htaccess wieder löschen, was sich aber oft als schrierig erweist, weil die datei versteckt ist. Ich empfehle dafür den WinCommander 5.5, weil man da unter "netz / FTP versteckte dateien anzeigen" alle dateien sichtbar macht und die .htaccess löschen oder bearbeiten kann.
Sollte das Forum weiterhin erreichbar sein, dann ist mod_rewrite auf dem Server eingerichtet. Jetzt sollte man ZUSÄTZLICH zu "http://www.forum.de/viewtopic.php?t=32" auch die Seite "http://www.forum.de/topic32.html" erreichen.

Soweit die gute Nachricht...

Nun zur Schlechten....es bringt nichts!
Ich habe Waagenbauers Forum aufgesucht und nach markanten Wörtern gesucht, die in Beiträge erscheinen (vom Juni), aber bei mehreren Suchmaschinen (Google, usw.) wurden diese Worte nicht gefunden.

Meine Theorie...
Da die Seiten zwar parallel erreichbar sind, aber bei einem klick auf einen Link dennoch die alte Schreibweise angezeigt wird (...viewtopic.php?t=32) werden die Suchmaschinen diese Seiten nicht finden, weil:
1. liegen die Dateien nicht auf dem Server, sondern werden generiert
2. folgen Suchmaschinen den Links, welche immer noch dynamisch angezeigt werden

Wenn man nun das Forum so umschreiben könnte, daß NUR noch die Statischen Seiten wiedergegeben würden, dann dürfen auch die Beiträge von den Suchmaschinen gefunden werden.
________________________________________________
Möge mein Forum so gut besucht werden wie dieses hier ;-)
Benutzeravatar
Guido
Mitglied
Beiträge: 1307
Registriert: 06.10.2002 09:44
Wohnort: Rheinland
Kontaktdaten:

Beitrag von Guido »

Hi Chris
Danke für die Info und für die Arbeit die Du Dir gemacht hast. Schade dass es nicht geht. Ich warte ja auch immer noch auf die beiden sessions.php von pumi bzw. itst (siehe anderen Thread dazu), aber anscheinend ist das DOCH ein grosses Geheimnis ;-)....
Benutzeravatar
Chris
Mitglied
Beiträge: 110
Registriert: 29.11.2002 08:22

Beitrag von Chris »

Wenn ich das richtig sehe, liegt das Problem darin, daß zwar eine statische Seite erstellt wird, aber die adresszeile des browsers nicht aktualisiert wird (es wird also immer noch die dynamische seite angezeigt).
Ich bin der Sache auf der Spur...
________________________________________________
Möge mein Forum so gut besucht werden wie dieses hier ;-)
Benutzeravatar
Chris
Mitglied
Beiträge: 110
Registriert: 29.11.2002 08:22

Beitrag von Chris »

Ich habe erwas gefunden, was uns sicher weiterhelfen könnte.
Allerdings ist das für PostNuke geschrieben und müßte also für unser Forum umgeschrieben werden.

Code: Alles auswählen

Für Postnuke war mein wichtigstes Ziel aus:
modules.php?op=modload&name=News&file=article&sid=8
article8.html
zu machen.

Dazu erstellt man eine Datei namens .htaccess mit folgendem Inhalt:
--------
RewriteEngine On
#Articles
RewriteRule ^article([1-9][0-9]*).* modules.php?op=modload&name=News&file=article&sid=$1
--------
Das heißt nichts anderes wie, mache aus einer Anfrage nach articlexxx.* eine Anfrage nach einem Artikel.

Testen kann man es dann auch gleich, indem man einfach händisch die URL http://website/article1.html ausprobiert.

Nun der schwierigere Teil, das anpassen der Links innerhalb von Postnuke
Wie gesagt ändere ich dazu die themes.php Datei. Wichtig ist, entweder alle zu ändern oder nur das Default Theme zu ändern.

Zunächst wird eine Funktion hinzugefügt zur theme.php:

function replace_for_mod_rewrite($s)
{ 
$in = array(
#article
"'modules.php?op=modload&name=News&file=article&sid=([1-9][0-9]*)&mode=thread&order=0&thold=0'si",
"'modules.php?op=modload&name=News&file=index&catid=&topic=([1-9][0-9]*)'si",
); 
$out = array(
"article1.html" , 
"Topic1.html" ,
); 
$s = preg_replace($in, $out, $s); 
return $s;
}

Diese Funktion nimmt den Parameter ($s) und ändert ihn ab mittels preg_replace. Raus kommt dann die geänderte URL (article9.html).
Die Funktion ruft man dann einfach in den einzelnen Bereichen der theme.php auf. 

Beispielsweise in der themeindex Funktion:


function themeindex ($_deprecated, $_deprecated, $_deprecated, $_deprecated, $_deprecated, $_deprecated, $_deprecated, $_deprecated, $_deprecated, $_deprecated, $_deprecated, $_deprecated, $info, $links, $preformat) {
global $thename;
// Ersetzungen für mod_rewrite
$preformat['catandtitle']=replace_for_mod_rewrite($preformat['catandtitle']);
$links['searchtopic']=replace_for_mod_rewrite($links['searchtopic']);
$preformat[more]=replace_for_mod_rewrite($preformat[more]);
[...]
}

Hiermit werden dann alle wichtigen übergebenen Parameter zuerst geändert, bevor sie ausgegeben werden.

Zu sehen ist das ganze unter http://www.baecker.com/
PHPNuke & die GPL    PHPNuke & die GPLx
Das Problem ist jetzt, welche Dateien müssen geändert werden, damit nicht mehr der link ...viewtopic.php?t=56, sondern der link topic56.html erscheint. Und das nach Möglichkeit schon im Programm selber, damit Google (und andere) schon im Quelltext einen statischen link sehen, den sie folgen können.
________________________________________________
Möge mein Forum so gut besucht werden wie dieses hier ;-)
Benutzeravatar
Waagenbauer
Mitglied
Beiträge: 219
Registriert: 11.06.2001 02:00
Kontaktdaten:

Beitrag von Waagenbauer »

Meine Theorie...
Da die Seiten zwar parallel erreichbar sind, aber bei einem klick auf einen Link dennoch die alte Schreibweise angezeigt wird (...viewtopic.php?t=32) werden die Suchmaschinen diese Seiten nicht finden, weil:
1. liegen die Dateien nicht auf dem Server, sondern werden generiert
2. folgen Suchmaschinen den Links, welche immer noch dynamisch angezeigt werden
Also wenn ich das richtig verstehe müssen alle Links zum eigenen Forum ebenfalls in .../topic1234.html umgewandelt werden, damit die Suchmaschienen das Forum durchsuchen.

Nun ja, ich bin schon froh wenn die Google-Spider meine Seite durchkämmen. Dazu gibs ja diesen kleinen Hack. Aber das ist ein anderes Thema.

Ich finde um alte Forum-Links aus dem 1.4 ins 2.0 umzuwandeln ist mod_rewrite eigentlich schon ganz brauchbar.
http://www.kaltmacher.de - Die Seite für PC-Freaks und Profis.
Benutzeravatar
Chris
Mitglied
Beiträge: 110
Registriert: 29.11.2002 08:22

Beitrag von Chris »

du hast mich auf eine idee gebracht...
wenn ich in der index.php einen link zu einer Datei angebe, welche alle links enthält, die vorhanden sind (als beiträge), dann werden auch alle Beiträge gefunden.
Ich kenne mich mit php nicht besonders gut aus, aber ich dachte da an sowas wie:

for i = 1 to 1000
if exist topic(i).html then create link zu topic(i).html
next i
(oder wie auch immer sowas in php aussehen würde).

Eleganter wäre es, wenn man aus der Datenbank die höchste topic-zahl auslesen würde und dann die schleife nur bis dahin laufen lassen würde.
Die Datei würde ich dann einmal in der Woche ausführen und hätte wöchentlich eine aktuelle Linkliste zu meinen Beiträgen (topic1.html wird durch den rewrite_mod erkannt, obwohl es eigentlich nur die viewtopic.php?t=1 gibt). Damit wäre das Problem gelöst, weil die Spider den Links folgen, also alle Beiträge finden, die in der Linkliste vorhanden sind (und da diese durch den rewrite_mod als statische seiten gesehen werden würden sogar ALLE suchmaschinen die Beiträge mit durchsuchen) :P
Wer von euch wäre bereit so einen code zu schreiben?
________________________________________________
Möge mein Forum so gut besucht werden wie dieses hier ;-)
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“