[Tutorial] Mod Rewrite Pack fürs 2.3.x

TheMastaKilla
*Vergesst nicht ein Backup zu machen, ich übernehme keine Garantie*

Jetzt gibts auch wieder was für die aktuelle 2.3.x des WBB
Das Archiv ist nur bei PR höheren Seiten zu empfehlen !!!

Lade dir das Mod Rewrite Pack für 2.1 herunter :
http://www.your-wbb.de/database.php?action=view&entryid=608
Natürlich benutzt ihr nicht die Anleitung dort, die ist für das 2.1

Die mod_rewrite.php kommt ins hauptverzeichnis

Nun erstellt ihr eine Textdatei mit folgendem Inhalt :

code:
1:
2:
RewriteEngine On
RewriteRule ^(.*)\.(htm|html)$ /mod_rewrite.php?file=$1 [L]


Nun speichert ihr diese und benennt sie in .htaccess um und ladet sie in euer Verzeichnis ^^

Öffne /acp/lib/class_tpl_file.php:
Suche

code:
1:
2:
3:
4:
5:
6:
/* print template */
 function output($template, $isacp=0) {
  headers::send($isacp);
  print($template);
 }
 }



Ersetzen mit:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
/* print template */
function output($template, $isacp=0) {
  global $wbbuserdata;
  headers::send($isacp);
  if($isacp==0) {

   if(!$wbbuserdata['userid']) {
    $template = preg_replace("/href=\"(^|".str_replace("/","\/",$url2board)."\/)([\w\d]+)\.php\?(.*)\"/iesU",'$this->parseUrl("\\3", "\\2")',$template);
    $template = preg_replace("/href=\"([\w\d]+)\.php\?(.*)\"/iesU",'$this->parseUrl("\\2","\\1")',$template);
   }
  }
  print($template);
}

function parseUrl($url, $file) {
 global $url2board;

     list($url,$verweis) = explode("#",$url);

    return 'href="'.$url2board.'/'.$file.','.str_replace(
        array(
            '&',
            '&',
            '='
        ),
        array(
            ',',
            ',',
            '-'
        ),
        $url).'.html'.(($verweis) ? ("#$verweis"):("")).'"';
}
}



Speichern und hochladen.


Öffne /thread.php

Suche function lastpost() {


Füge bei dem befehl global (direkt unter function lastpost()) die Variable $wbbuserdata hinzu.
Das sieht dann so aus:
code:
1:
global $visible, $SID_ARG_2ND_UN, $db, $n, $url2board, $wbbuserdata;


Suche (in der Funktion)

code:
1:
header("Location: thread.php?postid=$result[postid]&sid=".$session['hash']."#post$result[postid]");


Ersetzen mit:

code:
1:
header("Location: ".(($wbbuserdata['userid']) ? ("thread.php?postid=$result[postid]&sid=".$session['hash']) : ("thread,postid-$result[postid],sid-$session[hash].html"))."#post$result[postid]");



Suche function firstnew($lastvisit) {

Füge bei global wieder $wbbuserdata an.
das sieht dann so aus:
code:
1:
global $visible, $db, $n, $SID_ARG_2ND_UN, $threadid, $url2board, $wbbuserdata;


Suche (in der Funktion)


code:
1:
2:
if($result['postid']) header("Location: "thread.php?postid=$result[postid]&sid=$session[hash]#post$result[postid]");
  else header("Location: thread.php?goto=lastpost&threadid=$threadid&sid=$session[hash]");


ersetze mit:

code:
1:
2:
if($result['postid']) header("Location: ".(($wbbuserdata['userid']) ? ("thread.php?postid=$result[postid]&sid=$session[hash]") : ("thread,postid-$result[postid],sid-$session[hash].html"))."#post$result[postid]");
  else header("Location: ".(($wbbuserdata['userid']) ? ("thread.php?goto=lastpost&threadid=$threadid&sid=$session[hash]") : ("thread,goto-lastpost,sid-$session[hash],threadid-$threadid.html")));



Speichern und hochladen.

Nun lagern wir das CSS aus :

Erstelle eine Textdatei. Zum aulagern geh einfach auf dein Forum. -> Ansicht -> Quelltext.
Markiere nun alles zwischen <style type="text/css"><!-- und --></style>
Google mag das überhaupt nicht Augenzwinkern . Nun drücke STRG + C und kopiere den Inhalt in die Textdatei. Speichern.
Nun ändere deine Textdatei in style.css und kopiere sie ins root (in das verzeichnis wo deine index.php liegt)

PS. Alternativ kannst du auch den Namen der style.css ändern, am besten durch einen relevanten Suchbegriff der auch auf deiner Seite vorkommt.

Nächster Schritt :

Gehe ins ACP :

Öffne das Template headinclude :

Ersetze den Inhalt durch :

code:
1:
2:
3:
4:
5:
6:
7:
8:
<meta http-equiv="Content-Type" content="text/html; charset={$lang->items['LANG_GLOBAL_ENCODING']}" />
<meta http-equiv="content-language" content="de" />
<meta name="keywords" content="$board[title] $thread[topic]" />
<meta name="description" content="$thread[topic] $board[title]" />
<meta name="author" content="$master_board_name" />
<meta name="robots" content="index,follow" />
<link rel="up" href="javascript:self.scrollTo(0,0);" />
<link rel="stylesheet" type="text/css" href="style.css" />


Downloaden -> hochladen -> fertig
Dann braucht ihr nur noch das CSS auslagern und die headinclude ändern ^^

Nun beheben wir das Problem mit den Session ID's. Diese Aktion durchzuführen würde ich auch Foren ohne Mod Rewrite empfehlen.
Ich habe mir schon viel Müll anhören müssen deswegen eine Kurze Erklärung dazu :

Die Suma Bots bekommen bei jedem Neuspidern einer Seite eine neue ID zugewiesen. Alle Links der gerade gespiderten Seite haben diese neue ID. So schafft man eine Bot-Falle, da durch ewig neue ID's ständig neue Seiten produziert werden. Es gibt wohl keinen Bot der da so schnell wieder rauskommt.

Um das Problem zu beseitigen macht ihr folgendes :

Gehe ins ACP und wähle "Templates suchen & ersetzen" :

Nun füge bei "Suchen nach" ein :

code:
1:
{$SID_ARG_1ST}


bei "Ersetzen durch" :

code:
1:
<if($wbbuserdata['userid'])><then>{$SID_ARG_1ST}</then></if>


Nun klicke auf "ersetzen"

Nun "Alle Templates cachen"

Nächster Schritt :

Gehe wieder zu "Templates suchen & ersetzen" :

Füge jetzt bei "Suchen nach" ein :

code:
1:
{$SID_ARG_2ND}


bei ersetzen durch :

code:
1:
<if($wbbuserdata['userid'])><then>{$SID_ARG_2ND}</then></if>


Wieder auf ersetzen klicken -> Templates neu cachen -> fertig !

PS :

Ich weiß nicht wo ich das hinposten soll Augenzwinkern deswegen hab ichs mal als Idee aufgegriffen und hier gepostet...

Wer Hilfe und Tipps zur Suma Optimierung braucht möchte ich bitten aus Zeitgründen meinerseits sich an mein Forum zu wenden smile


MfG MastaKilla
b3cks
Super Sache, danke!
Hab schon lange so eine Lösung für das 2.3.x gesucht. Vor allem mit den Session ID's. Habs grad in ein 2.3.3 eingebaut und es klappt wunderbar. Danke nochmals!

Gruß
Bastian aka b3cks
daking
geht das / gibts das auch fürs 2.2 ? smile
flashbone
ist ja schon was älter...

hab das wbb 2.3.6 und portal 4.0.1

hab das alles gemacht.
und klappt alles.

nur gilt das rewrite nur für das forum?

weil, index.php .. portal.php steht trotzdem in der adresszeile .. nur überwiegend forum threads etc. stehen mit htm
chrismoder
Gei mir werden keine Themen mehr angezeigt (Bild) verwirrt

Ich habe den Hack wieder Gelöscht aber es ist immernoch so.

Das habe ich gemacht und auch schon hundert mal überprüft

die .htaccess und die mod_rewrite.php wieder gelöscht

die /acp/lib/class_tpl_file.php von mein Backup eingefügt

die /thread.php von mein Backup eingefügt

style.css wieder gelöscht und den Link in header gelöscht


Durch suchen und ersetzen

suche: <if($wbbuserdata['userid'])><then>{$SID_ARG_1ST}</then></if>
ersetzen: {$SID_ARG_1ST}

und

suchen:<if($wbbuserdata['userid'])><then>{$SID_ARG_2ND}</then></if>
ersetzen: {$SID_ARG_2ND}


Als letzten habe alle Templates und die ACP-teemplates gecacht.


Was habe ich falsch oder nicht gemacht, mein ganzes Forum ist jetzt ohne Titel unglücklich


Das ist aber nur so in der board.php?boardid=* die Beiträge lassen sich noch aufrufen die borad.php habe ich aus einen alten Backup auch nochmal neu rein.