mod_rewrite-Pack für 2.1.x

Pello
sieht sehr nett aus aus smile
allerdings hab ich das verhalten von google bei deiner seite beobachtet und merke, dass der bot mit den session ids durcheinander kommt und somit später bei anderer id alles neu indizieren muss weil er es für andere dateien hält. könnte man nicht eine feste session id für google einrichten die der bot dann immer bekommt wenn der agent "googlebot" heißt? das müsste doch im bereich es möglichen liegen.
Jan
hm...

wär wohl machbar (irgendwo if(stristr("Googlebot",$_SERVER['HTTP_USER_AGENT']) ) ...)
Flyboy
also bei mir geht da nix:

Wenn ich auf einen Link drücke kommt nur:

Sie haben einen ungültigen Verweis angegeben. Wenn Sie einem korrekten Link gefolgt sind, sollten Sie den Administrator benachrichtigen.


aber die rewriterule geht.

desweitern werden die threadids u.s.w. nicht in der URL angezeigt!

was warscheinlich auch den ersten Fehler auslöst
Jan
poste mal einen link...

möglicherweise hast du irgendwas bei der installation falsch gemacht...?

edit - wenn du das board in deiner sig meinst, bei mir funktioniert da alles...
OF-Shadow
Man sollte für die Gäste die Sessions wohl ganz weg lassen? verwirrt
Jan
wieso?
OF-Shadow
Der Hack klappt leider nicht mit dem Attachment-Mod von Merides unglücklich

Siehe: Link
Jan
wer schaltet auch attachments für gäste freiZunge raus
OF-Shadow
Muss ich erlauben, da es ansonsten trotzdem angezeigt wird *g* Nur mit dem Unterschied, dass kein Bild ausgegeben wird... ein Kreuz. Kann man da nix an Deinem Hack anpassen?
Jan
hm...schwierig!

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
function parseUrl($url$file) {
 global $url2board;

     list($url,$verweis) = explode("#",$url);
   if($file == "attachment") return "href=\"{$file}.php?{$url}".(($verweis) ? ("#{$verweis}"):(""))."\";
    return 'href="'.$url2board.'/'.$file.','.str_replace(
        array(
            '&',
            '&',
            '='
        ),
        array(
            ',',
            ',',
            '-'
        ),
        $url).'.htm'.(($verweis) ? ("#$verweis"):("")).'"';
}


ersetze deine funktion parseUrl (in der class_tpl_file.php) mit der, dürfte gehen, ist aber NICHT! getestet.
pumi
hallo
ich bekomme immer eine 404 wenn ich auf einen link klicke...
mein board
an was kann das liegen?
Jan
hm.. im moment ist der hack gar nicht installiert, oder?
Doc Lecter
Hi Jan! Ich hatte ebend den Hack mal in mein WBB 2.1.4 eingebaut. Hat irgendwie net gefunzt. Ich habe z.B. folgenden Code net gefunden:

code:
1:
2:
3:
4:
Suche (in der Funktion)
=======================

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


oder aber

code:
1:
2:
3:
4:
5:
Suche (in der Funktion)
=======================

  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]");


Ich häng mal meine Thread.php an.

Meine Site ist: www.RockFlirt.de (hab auch ne Menge Hacks eingebaut)

Danke schonmal für deine Hilfe.
Jan
code:
1:
2:
3:
  header("Location: thread.php?sid=$session[hash]&postid=$result[postid]#post$result[postid]");

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

such mal danach...
Doc Lecter
Jou, das hab ich am Anfang auch probiert. Es werden zwar alle PHP Dateien in HTM umgewandelt, allerdings hab ich dann ein Problem: Egal auf welchen Menupunkt ich im Header klicke - es wird immer das Forum angezeigt. Echt seltsam
Jan
wie sind da im header die links?
sind die auf z.b. memberslist,sid-.htm oder team.htm oder so? oder immer auf index.htm ?
Doc Lecter
Ja die Links sind schon auf memberslist,sid-.htm usw. , aber es wird trotzdem immer das Forum aufgerufen. Auch beim Aktualisieren.
American
Schade, in einem 2.1.5 läuft dieser hack nicht, es scheitert schon bei der class_tpl_file.php

Scheint sich verändert zu haben im gegensatz zur 2.1.4er Version.
awex
moin,

ich hätte gerne, das nicht nur gäste sondern alle user die neuen links sehen, was ist zu tun?

danke!
Pikay
hi,

ich bekomme immer die meldung "objekt nicht gefunden" wenn ich auf dem portal den link zum forum anklicke (als nicht eingelogter user).
hier mal meine dateien:

class_tpl_file.php
php:
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:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:

<?php
class tpl {
 
 var $templates   = array();
 var $templatepackid 0;
 var $path ".";
  
 /* constuctor */
 function tpl($templatepackid=0$path=".") {
  $this->templatepackid $templatepackid;
  $this->path=$path;
 }
 
 /* get template */
 function get($templatename$isacp=0) {
  if($isacp==0) {
   if(!isset($this->templates[$templatename])) {
    if($this->templatepackid!=&& file_exists($this->path."/cache/templates/".$this->templatepackid."_".$templatename.".php")) {
     include($this->path."/cache/templates/".$this->templatepackid."_".$templatename.".php");
    }
    elseif(file_exists($this->path."/cache/templates/0_".$templatename.".php")) {
     include($this->path."/cache/templates/0_".$templatename.".php");
    }
    else $this->templates[$templatename]="template &quot;".$templatename."&quot; doesnt exist";
   }
   return $this->templates[$templatename];
  }
  else {
   if(!isset($this->templates['acp_'.$templatename])) {
    if(file_exists($this->path."/cache/templates/acp/".$templatename.".php")) {
     include($this->path."/cache/templates/acp/".$templatename.".php");
    }
    else $this->templates['acp_'.$templatename]="template &quot;".$templatename."&quot; doesnt exist";
   }
   return $this->templates['acp_'.$templatename];
  }
 }
 
 /* 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(
            '&amp;',
            '&',
            '='
        ),
        array(
            ',',
            ',',
            '-'
        ),
        $url).'.htm'.(($verweis) ? ("#$verweis"):("")).'"';
}
}
?>



thread.php
php:
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:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475:
476:
477:
478:
479:
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
514:
515:
516:
517:
518:
519:
520:
521:
522:
523:
524:
525:
526:
527:
528:
529:
530:
531:
532:
533:
534:
535:
536:
537:
538:
539:
540:
541:
542:
543:
544:
545:
546:
547:
548:
549:
550:
551:
552:
553:
554:
555:
556:
557:
558:
559:
560:
561:
562:
563:
564:
565:
566:
567:
568:
569:
570:
571:
572:
573:
574:
575:
576:
577:
578:
579:
580:
581:
582:
583:
584:
585:
586:
587:
588:
589:
590:
591:
592:
593:
594:

<?php
$filename="thread.php";

require("./global.php");
require("./acp/lib/class_parse.php");
$lang->load("POST,POSTINGS,THREAD,MEMBERS");

if((!isset($postid) && !isset($threadid)) || $thread['closed']==3) eval("error(\"".$lang->get4eval("LANG_GLOBAL_ERROR_FALSELINK")."\");");
if(!checkpermissions("can_read_thread")) access_error();

class Thread {
 var $threadid 0;
 var $pagelink "";
 var $page 0;
 var $pages 0;
 var $postids ""; 
 var $orderBy "";
 var $userfieldcache = array();
 var $parse;
 
 function makePostBit($posts,$count,$indentwidth=0) {
  global $thread$board$tpl$wbbuserdata$style$lang$session$userratings$showuserratinginthread$showuserlevels$showonlineinthread$useronlinetimeout$showregdateinthread$showuserfieldsinthread$showgenderinthread$showavatar$_GET$showthreadstarter$showuserpostsinthread$allowsigsmilies$allowsightml$allowsigbbcode$max_sig_image$authormarking$picmaxwidth$picmaxheight;
  if($this->userfieldcachereset($this->userfieldcache);
  $userrating="";
  $signature="";
  $lastedit="";
  $attachmentbit="";
  $user_online="";
  $userfields="";
  $useravatar="";
  $rankimages="";
  $setvisible="";
  $userlevel="";
  $posts['username']=htmlconverter($posts['username']);
  
  /** mod/admin option -> set visible post **/
  if($posts['visible']==&& $posts['posttime']!=$thread['starttime']) $invisible=1;
  else $invisible=0;
 
  $tdclass=getone($count,"tableb","tablea");
 
  /* tn123: online time per user */
  if ($posts['onlinetime'])
    $posts['onlinetime'] = round($posts['onlinetime'] / 36001);
  if ($posts['onlinetime'])
    $showonlinetime 1;
  /* tn123 */
  
  $posts['message']=$this->parse->doparse($posts['message'],$posts['allowsmilies'],$posts['allowhtml'],$posts['allowbbcode'],$posts['allowimages']);
  $posts['posttopic']=htmlconverter(textwrap($posts['posttopic']));
  if($posts['iconid']) $posticon=makeimgtag($posts['iconpath'],getlangvar($posts['icontitle'], $lang), 0);
  else $posticon="";
  if($posts['posttime']>$thread['lastvisit']) $newpost=1;
  else $newpost=0;
 
  $postdate=formatdate($wbbuserdata['dateformat'],$posts['posttime'],1);
  $posttime=formatdate($wbbuserdata['timeformat'],$posts['posttime']);
 
  if($posts['attachmentid']) {
   $posts['attachmentextension']=htmlconverter($posts['attachmentextension']);
   $posts['attachmentname']=htmlconverter($posts['attachmentname']);
   
   if(checkpermissions("can_download_attachments")==&& $wbbuserdata['showimages']==&& $wbbuserdata['can_download_attachments']==&& ($posts['attachmentextension']=="gif" || $posts['attachmentextension']=="jpg" || $posts['attachmentextension']=="jpeg"  || $posts['attachmentextension']=="png")) {
    $imgsize=@getimagesize("./attachments/attachment-$posts[attachmentid].$posts[attachmentextension]");
    
    if(($picmaxwidth!=&& $imgsize[0]>$picmaxwidth) || ($picmaxheight!=&& $imgsize[1]>$picmaxheight)) {
     if($picmaxwidth!=0$div1 $picmaxwidth/$imgsize[0];
     else $div1=1;
     if($picmaxheight!=0$div2 $picmaxheight/$imgsize[1];
     else $div2=1;
    
     if($div1<$div2) {
      $imgwidth=$picmaxwidth;
      $imgheight=round($imgsize[1]*$div1);
     }
     else {
      $imgheight=$picmaxheight;
      $imgwidth=round($imgsize[0]*$div2);   
     }
     
     eval ("\$LANG_THREAD_ATTACHMENT_IMAGE_SMALL = \"".$lang->get4eval("LANG_THREAD_ATTACHMENT_IMAGE_SMALL")."\";");
     eval ("\$attachmentbit = \"".$tpl->get("thread_attachmentbit_show_small")."\";");
    }
    else {
     eval ("\$LANG_THREAD_ATTACHMENT_IMAGE = \"".$lang->get4eval("LANG_THREAD_ATTACHMENT_IMAGE")."\";");
     eval ("\$attachmentbit = \"".$tpl->get("thread_attachmentbit_show")."\";");
    }
   }
   else {
    if(!file_exists($style['imagefolder']."/filetypes/".$posts['attachmentextension'].".gif")) $extensionimage="unknown";
    else $extensionimage=$posts['attachmentextension'];
    $posts['attachmentsize']=ceil($posts['attachmentsize']/1024);
    eval ("\$LANG_THREAD_ATTACHMENT_INFO = \"".$lang->get4eval("LANG_THREAD_ATTACHMENT_INFO")."\";");
    eval ("\$attachmentbit = \"".$tpl->get("thread_attachmentbit")."\";");
   }
  }
 
  if($posts['editorid']) {
   $editdate=formatdate($wbbuserdata['dateformat'],$posts['edittime']);
   $edittime=formatdate($wbbuserdata['timeformat'],$posts['edittime']);
   $posts['editor']=htmlconverter($posts['editor']);
   eval ("\$LANG_THREAD_EDITOR = \"".$lang->get4eval("LANG_THREAD_EDITOR")."\";");
  }
 
  if($posts['userid']) {
   $posts['homepage']=htmlconverter($posts['homepage']);
   $posts['email']=getASCIICodeString($posts['email']);
   
   $username=$posts['username'];
   $rankimages=formatRI($posts['rankimages']);
   if($posts['title']) $posts['ranktitle']=htmlconverter($posts['title']);
   else $posts['ranktitle']=getlangvar($posts['ranktitle'], $lang);
  
   if($userratings==&& $showuserratinginthread==1$userrating=userrating($posts['ratingcount'],$posts['ratingpoints'],$posts['userid']);
   if($showuserlevels==1$userlevel=userlevel($posts['userposts'],$posts['regdate']);
    
   if($showonlineinthread==1) {
    if(($posts['invisible']==|| $wbbuserdata['a_can_view_ghosts']==1) && $posts['lastactivity']>=time()-$useronlinetimeout*60) {
     $user_online=1;
     eval ("\$LANG_MEMBERS_USERONLINE = \"".$lang->get4eval("LANG_MEMBERS_USERONLINE")."\";");
    }
    else {
     $user_online=0;
     eval ("\$LANG_MEMBERS_USERONLINE = \"".$lang->get4eval("LANG_MEMBERS_USEROFFLINE")."\";");
    }
   }
  
   if($showregdateinthread==1$posts['regdate']=formatdate($wbbuserdata['dateformat'],$posts['regdate']);
  
   if($showuserfieldsinthread==&& is_array($this->userfieldcache) && count($this->userfieldcache)) {
    while(list($key,$val)=each($this->userfieldcache)) {
     $fieldcontent=textwrap($posts["field".$val['profilefieldid']],20);
     if($fieldcontent && $fieldcontent!="0000-00-00") {
      if($val['fieldtype']=="multiselect"$fieldcontent=str_replace("\n","; ",$fieldcontent);
      elseif($val['fieldtype']=="date") {
       $row_datearray explode("-",$fieldcontent);
       if($row_datearray[0]=="0000"$fieldcontent=$row_datearray[2].".".$row_datearray[1].".";
       else $fieldcontent=$row_datearray[2].".".$row_datearray[1].".".$row_datearray[0];
      }
      $fieldcontent=htmlconverter($fieldcontent);
      eval ("\$userfields .= \"".$tpl->get("thread_userfields")."\";");
     }
    }
   }
   
   if($showgenderinthread==0$posts['gender']=0;
   if($posts['gender']==1) eval ("\$LANG_THREAD_MALE = \"".$lang->get4eval("LANG_THREAD_MALE")."\";");
   if($posts['gender']==2) eval ("\$LANG_THREAD_FEMALE = \"".$lang->get4eval("LANG_THREAD_FEMALE")."\";");
  
   if($posts['showemail']==|| $posts['usercanemail']==1) eval ("\$LANG_MEMBERS_SENDEMAIL = \"".$lang->get4eval("LANG_MEMBERS_SENDEMAIL")."\";");  
   if($posts['homepage']) eval ("\$LANG_MEMBERS_HOMEPAGE = \"".$lang->get4eval("LANG_MEMBERS_HOMEPAGE")."\";");
   eval ("\$LANG_MEMBERS_SEARCH = \"".$lang->get4eval("LANG_MEMBERS_SEARCH")."\";");
   eval ("\$LANG_MEMBERS_BUDDY = \"".$lang->get4eval("LANG_MEMBERS_BUDDY")."\";");
  
   if($posts['receivepm']==&& $wbbuserdata['can_use_pms']==1) eval ("\$LANG_MEMBERS_PM = \"".$lang->get4eval("LANG_MEMBERS_PM")."\";");
   if($posts['icq']) eval ("\$LANG_MEMBERS_ICQ = \"".$lang->get4eval("LANG_MEMBERS_ICQ")."\";");
   if($posts['aim']) {
    $posts['aim']=htmlconverter($posts['aim']);
    $aim=$posts['aim'];
    eval ("\$LANG_MEMBERS_AIM = \"".$lang->get4eval("LANG_MEMBERS_AIM")."\";");
   }
   if($posts['yim']) {
    $posts['yim']=htmlconverter($posts['yim']);
    $yim=$posts['yim'];
    eval ("\$LANG_MEMBERS_YIM = \"".$lang->get4eval("LANG_MEMBERS_YIM")."\";");
   }
   if($posts['msn']) {
    $posts['msn']=htmlconverter($posts['msn']);
     eval ("\$LANG_MEMBERS_MSN = \"".$lang->get4eval("LANG_MEMBERS_MSN")."\";");
   }
   
   if($posts['avatarid'] && $showavatar==&& $wbbuserdata['showavatars']==1) {
    $avatarname="images/avatars/avatar-$posts[avatarid].".htmlconverter($posts['avatarextension']);
    $avatarwidth=$posts['width'];
    $avatarheight=$posts['height'];
    if($posts['avatarextension']=="swf" && $allowflashavatar==1) eval ("\$useravatar = \"".$tpl->get("avatar_flash")."\";");
    elseif($posts['avatarextension']!="swf") eval ("\$useravatar = \"".$tpl->get("avatar_image")."\";");
   }
  
   if($authormarking==&& $posts['useronlinemarking']!=""$posts['username']=sprintf($posts['useronlinemarking'],$posts['username']);
   if(isset($_GET['hilightuser']) && $_GET['hilightuser']==$posts['userid']) $posts['username']="<span class=\"highlight\">".$posts['username']."</span>";
    
   if($showthreadstarter==&& $thread['starterid']==$posts['userid'] && $thread['starttime']!=$posts['posttime']) {
    $threadstarter=1;
    eval ("\$LANG_THREAD_THREADSTARTER_ALT = \"".$lang->get4eval("LANG_THREAD_THREADSTARTER_ALT")."\";");
   }
   else $threadstarter=0;
   
   if($posts['showsignature']==&& !$posts['disablesignature'] && $wbbuserdata['showsignatures']==&& $posts['signature']) {
    $posts['signature']=$this->parse->doparse($posts['signature'],$posts['allowsigsmilies'],$posts['allowsightml'],$posts['allowsigbbcode'],$posts['allowsigimages']);
    eval ("\$signature = \"".$tpl->get("thread_signature")."\";");
   }
   
   if($showuserpostsinthread==&& $posts['userposts']>=1000$posts['userposts'] = number_format($posts['userposts'], 0""$lang->get("LANG_GLOBAL_THOUSANDS_SEP")); 
  }
 
  eval ("\$postbit = \"".$tpl->get("thread_postbit")."\";");
  return $postbit;
 }
 
 function lastpost() {
  global $visible$session$db$n$wbbuserdata;
  $result $db->query_first("SELECT postid FROM bb".$n."_posts WHERE threadid = '".$this->threadid."' $visible ORDER BY posttime DESC",1);
  header("Location: ".(($wbbuserdata['userid']) ? ("thread.php?postid=$result[postid]&sid=".$session['hash']) : ("thread,postid-$result[postid],sid-$session[hash].htm"))."#post$result[postid]");
  exit();   
 }
 
 function firstnew($lastvisit) {
  global $visible$db$n$session$threadid$wbbuserdata;
  $result $db->query_first("SELECT postid FROM bb".$n."_posts WHERE threadid='".$this->threadid."' AND posttime>'".$lastvisit."' $visible ORDER BY posttime ASC",1);
  if($result['postid']) header("Location: ".(($wbbuserdata['userid']) ? ("thread.php?postid=$result[postid]&sid=$session[hash]") : ("thread,postid-$result[postid],sid-$session[hash].htm"))."#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.htm")));
  exit();
 }
 
 function nextnewest() {
  global $db$n$thread$boardid$tpl$lang$threadid;
  $result $db->query_first("SELECT threadid FROM bb".$n."_threads WHERE visible = 1 AND lastposttime>'$thread[lastposttime]' AND closed <> 3 AND boardid = '$boardid' ORDER BY lastposttime ASC",1);
  if(!$result['threadid']) error($lang->get("LANG_THREAD_ERROR_NONEXTNEWEST"));
  $threadid=$result['threadid'];
  $this->threadid=$threadid;
  $thread $db->query_first("SELECT * FROM bb".$n."_threads WHERE threadid = '".$this->threadid."'");
 }
 
 function nextoldest() {
  global $db$n$thread$boardid$tpl$lang$threadid;
  $result $db->query_first("SELECT threadid FROM bb".$n."_threads WHERE visible = 1 AND lastposttime<'$thread[lastposttime]' AND closed <> 3 AND boardid = '$boardid' ORDER BY lastposttime DESC",1);
  if(!$result['threadid']) error($lang->get("LANG_THREAD_ERROR_NONEXTOLDEST"));
  $threadid=$result['threadid'];
  $this->threadid=$threadid;
  $thread $db->query_first("SELECT * FROM bb".$n."_threads WHERE threadid = '$threadid'");    
 }
 
 function makePagelink() {
  global $session$threadview$hilight$hilightuser$showpagelinks;
  $this->pagelink=makepagelink("thread.php?threadid=".$this->threadid."&amp;sid=$session[hash]&amp;threadview=$threadview&amp;hilight=".urlencode($hilight)."&amp;hilightuser=$hilightuser",$this->page,$this->pages,$showpagelinks-1);
 }
 
 function readPosts() {
  global $docensor$board$wbbuserdata$hilight$usecode$showuserfieldsinthread$db$n$showavatar$authormarking$lang; 
  $this->parse = new parse($docensor,75,$wbbuserdata['showimages'],$hilight,$usecode);

  if($showuserfieldsinthread==1) {
   $userfields=", uf.*";
   $userfieldsjoin="LEFT JOIN bb".$n."_userfields uf ON (uf.userid=p.userid)";
   $result=$db->unbuffered_query("SELECT profilefieldid, title, fieldtype FROM bb".$n."_profilefields WHERE showinthread=1".(($wbbuserdata['a_can_use_acp']==0) ? (" AND hidden=0") : (""))." ORDER BY fieldorder ASC");
   while($row=$db->fetch_array($result)) {
    $row['title']=getlangvar($row['title'], $lang);
    $this->userfieldcache[]=$row;
   }
  }
  else {
   $userfields="";
   $userfieldsjoin="";
  }

  if($showavatar==1) {
   $avatar=", av.avatarid, av.avatarextension, av.width, av.height";
   $avatarjoin="LEFT JOIN bb".$n."_avatars av ON (u.avatarid=av.avatarid)";
  }
  else {
   $avatar="";
   $avatarjoin="";  
  }

  if($authormarking==1) {
   $marking=", g.useronlinemarking";
   $markingjoin="LEFT JOIN bb".$n."_groups g ON (u.useronlinegroupid=g.groupid)";
  }
  else {
   $marking="";
   $markingjoin=""; 
  }
  

  $result $db->query("SELECT p.*,
   u.userposts, u.regdate, u.signature, u.email, u.homepage, u.icq, u.aim, u.yim, u.msn, u.showemail, u.receivepm, u.usercanemail, u.ratingcount, u.ratingpoints, u.gender, u.invisible, u.title, u.lastactivity, u.allowsigsmilies, u.allowsightml, u.allowsigbbcode, u.allowsigimages, u.disablesignature, u.onlinetime,
   r.ranktitle, r.rankimages,
   at.attachmentname, at.attachmentid, at.attachmentextension, at.attachmentsize, at.counter,
   i.iconpath, i.icontitle
   $userfields
   $avatar
   $marking
   FROM bb".$n."_posts p 
   LEFT JOIN bb".$n."_users u USING (userid)
   LEFT JOIN bb".$n."_ranks r USING (rankid)
   LEFT JOIN bb".$n."_attachments at ON (p.attachmentid=at.attachmentid)
   LEFT JOIN bb".$n."_icons i ON (p.iconid=i.iconid)
   $userfieldsjoin
   $avatarjoin
   $markingjoin
   WHERE p.postid IN (0".$this->postids.")".$this->orderBy);
   
  return $result;
 }
}

class FlatThread extends Thread {
 function FlatThread($threadid) {
  $this->threadid=$threadid;
 }
 
 function gotoPost($postid) {
  global $db$n$visible$postorder$postsperpage$_GET;
  if($postorder==0$result $db->query_first("SELECT COUNT(*) AS posts FROM bb".$n."_posts WHERE threadid='".$this->threadid."' AND postid<='$postid' $visible");
  else $result $db->query_first("SELECT COUNT(*) AS posts FROM bb".$n."_posts WHERE threadid='$threadid' AND postid>='$postid' $visible");
  $_GET['page']=ceil($result['posts']/$postsperpage);
 }
    
 function start() {
  global $postorder$db;
  $this->getPostIds();  
    
  $this->orderBy="ORDER BY p.posttime ".(($postorder) ? ("DESC") : ("ASC"));
  
  $count=0;
  $postbit="";
  $result $this->readPosts();
  while($row=$db->fetch_array($result)) $postbit.=$this->makePostBit($row,$count++);
  
  return $postbit;  
 }
 
 function getPostIds() {
  global $visible$db$n$_GET$postsperpage$postorder;
  $result $db->query_first("SELECT COUNT(*) FROM bb".$n."_posts WHERE threadid = '".$this->threadid."' $visible");
  $postcount $result[0];

  if(isset($_GET['page'])) {
   $this->page=intval($_GET['page']);
   if($this->page==0$this->page=1;
  }
  else $this->page=1;
  
  $this->pages ceil($postcount/$postsperpage);
  if($this->pages>1$this->makePagelink();
  
  $result $db->unbuffered_query("SELECT postid FROM bb".$n."_posts WHERE threadid = '".$this->threadid."' $visible ORDER BY posttime ".(($postorder) ? ("DESC") : ("ASC")),0,$postsperpage,$postsperpage*($this->page-1));
  while($row=$db->fetch_array($result)) $this->postids .= ",".$row['postid'];   
 }
}

class ThreadedThread extends Thread {
 var $offset 0;
 var $offset2 0;
 var $cache = array();
 var $list = array();
 var $max = -1;
 var $total 0;
 var $count 0;
 var $postbitlist "";
 
 function ThreadedThread($threadid) {
  $this->threadid=$threadid;
 }  

 function gotoPost($postid) {
  global $_GET$postsperpage$db$n$visible;   
  
  $result $db->query("SELECT postid, parentpostid FROM bb".$n."_posts WHERE threadid='".$this->threadid."' $visible ORDER BY posttime ASC");
  $this->total $db->num_rows($result);
  while($row=$db->fetch_array($result)) $this->cache[$row['parentpostid']][$row['postid']]=1;
  
  $this->countPosts($postid);
  $_GET['page']=ceil($this->count/$postsperpage);
 }
 
 function countPosts($finalpostid,$count=0,$parentid=0) {
  if(!isset($this->cache[$parentid])) return $count;
  reset($this->cache[$parentid]);
  
  while(list($postid,)=each($this->cache[$parentid])) {
   $count++;
   if($postid==$finalpostid) {
    $this->count=$count;
    break;
   }
   $count=$this->countPosts($finalpostid,$count,$postid);   
  }
  
  return $count;    
 }

 function start() {
  global $db$n$postsperpage$_GET$visible;
  
  if(isset($_GET['page'])) {
   $this->page=intval($_GET['page']);
   if($this->page==0$this->page=1;
  }
  else $this->page=1;
  
  $this->offset=$postsperpage*($this->page-1);
  $this->offset2=$this->offset+$postsperpage;
  
  if(count($this->cache)==0) {
   $result $db->query("SELECT postid, parentpostid FROM bb".$n."_posts WHERE threadid='".$this->threadid."' $visible ORDER BY posttime ASC");
   $this->total $db->num_rows($result);
   while($row=$db->fetch_array($result)) $this->cache[$row['parentpostid']][$row['postid']]=1;
  }
  
  $this->pages ceil($this->total/$postsperpage);
  if($this->pages>1$this->makePagelink();
  
  reset($this->cache);
  $this->generate();
  if($this->max>0$this->sync();
  $result $this->readPosts();
  
  while($posts=$db->fetch_array($result)) {
   $temp=$this->list[$posts['postid']];
   $this->list[$posts['postid']]=$posts;
   $this->list[$posts['postid']]['depth']=$temp;    
  }
  
  $count=0;
  $postbit="";
  reset($this->list);
  while(list($postid,)=each($this->list)) {
   $postbit .= $this->makePostBit($this->list[$postid],$count++,$this->list[$postid]['depth']*15);
   $this->postbitlist .= $this->makePostBitList($this->list[$postid],$this->list[$postid]['depth']*15);
  }
  return $postbit;
 }
 
 function generate($parentid=0,$count=0,$depth=0) {
  if(!isset($this->cache[$parentid])) return $count;
  reset($this->cache[$parentid]);
  
  while(list($postid,)=each($this->cache[$parentid])) {
   if($count>=$this->offset && $count<$this->offset2) {
    if($this->max==-1$this->max=$depth;
    if($depth<$this->max$this->max=$depth;
    
    $this->list[$postid]=$depth;
    $this->postids.=",".$postid;    
   }    
   $count++;
   $count=$this->generate($postid,$count,$depth+1);     
  }
  
  return $count;
 }
 
 function makePostBitList($posts$imgwidth=0) {
  global $tpl$wbbuserdata$lang$session$style$thread;
  
  $postdate=formatdate($wbbuserdata['dateformat'],$posts['posttime']);
  $posttime=formatdate($wbbuserdata['timeformat'],$posts['posttime']);
  
  if(!$posts['posttopic']) $posts['posttopic']="RE: ".$thread['topic']; 
  $posts['posttopic']=htmlconverter(textwrap($posts['posttopic']));
  $posts['username']=htmlconverter(textwrap($posts['username'],30));
  
  if($posts['posttime']>$thread['lastvisit']) $newpost=1;
  else $newpost=0;
 
  
  eval ("\$postbit = \"".$tpl->get("thread_postbitlist")."\";");
  return $postbit;
 }
  
 function sync() {
  reset($this->list);
  while(list($postid,$depth)=each($this->list)) $this->list[$postid]=$depth-$this->max;
 }  
}

if($wbbuserdata['a_can_use_acp']==|| $wbbuserdata['m_is_supermod']==|| ($wbbuserdata['m_is_mod']==&& $modpermissions['userid'])) $visible="";
else $visible="AND visible=1";

if(isset($_REQUEST['threadview'])) $threadview=intval($_REQUEST['threadview']);
else $threadview=$wbbuserdata['threadview'];

if(isset($_REQUEST['hilight'])) $hilight=urldecode($_REQUEST['hilight']);
else $hilight="";

if(isset($_REQUEST['hilightuser'])) $hilightuser=intval($_REQUEST['hilightuser']);
else $hilightuser=0;

if(!isset($_REQUEST['goto'])) $_REQUEST['goto']="";

if($threadview==1$t = new ThreadedThread($threadid);
else $t = new FlatThread($threadid);

if($_REQUEST['goto']=="lastpost"$t->lastpost();

/* threadvisit */
if($board['lastvisit']>$thread['lastvisit']) $thread['lastvisit']=$board['lastvisit'];
if($wbbuserdata['lastvisit']>$thread['lastvisit']) $thread['lastvisit']=$wbbuserdata['lastvisit'];

/* goto actions */
if($_REQUEST['goto']=="firstnew"$t->firstnew($thread['lastvisit']);
if($_REQUEST['goto']=="firstnew_thread"$t->firstnew($wbbuserdata['lastvisit']);
if($_REQUEST['goto']=="nextnewest"$t->nextnewest();
if($_REQUEST['goto']=="nextoldest"$t->nextoldest();

if($wbbuserdata['umaxposts']) $postsperpage=$wbbuserdata['umaxposts'];
elseif($board['postsperpage']) $postsperpage=$board['postsperpage'];
else $postsperpage=$default_postsperpage;
$postorder=$board['postorder'];

if(isset($postid)) $t->gotoPost($postid);

$db->unbuffered_query("UPDATE bb".$n."_threads SET views=views+1 WHERE threadid='$threadid'",1);
if($wbbuserdata['userid'] && $thread['lastposttime']>$thread['lastvisit']) $db->unbuffered_query("REPLACE INTO bb".$n."_threadvisit (threadid,userid,lastvisit) VALUES ('".$threadid."','".$wbbuserdata['userid']."','".time()."')",1);


$boardnavcache=array();
if($showboardjump==1$boardjump=makeboardjump($boardid);
$navbar=getNavbar($board['parentlist']);
eval ("\$navbar .= \"".$tpl->get("navbar_board")."\";");

$postbit $t->start();
$thread_poll="";
if($thread['pollid']) {
 if(checkmodpermissions("m_can_edit_poll")) eval ("\$mod_poll_edit = \"".$tpl->get("thread_poll_edit")."\";");
 unset($votecheck);
 
 $poll=$db->query_first("SELECT * FROM bb".$n."_polls WHERE pollid='$thread[pollid]'");
 $poll['question']=htmlconverter($poll['question']);
 
 if($poll['timeout']==0$timeout=time()+1;
 else $timeout=$poll['starttime']+$poll['timeout']*86400;
 if($_REQUEST['preresult']!=&& checkpermissions("can_vote_poll")==&& $timeout>=time()) {
  if($wbbuserdata['userid']) $votecheck=$db->query_first("SELECT id AS pollid FROM bb".$n."_votes WHERE id='$thread[pollid]' AND votemode=1 AND userid='$wbbuserdata[userid]'");
  else $votecheck=$db->query_first("SELECT id AS pollid FROM bb".$n."_votes WHERE id='$thread[pollid]' AND votemode=1 AND ipaddress='$REMOTE_ADDR'");
 } 

 if($_REQUEST['preresult']==|| $votecheck['pollid'] || !checkpermissions("can_vote_poll") || $timeout<time()) { // already voted; show result
  $votes=0;
  unset($polloption);
  $totalvotes=0;
  $polloptions=array();
  $result=$db->unbuffered_query("SELECT * FROM bb".$n."_polloptions WHERE pollid='$thread[pollid]' ORDER BY votes DESC");
  while($row=$db->fetch_array($result)) {
   $totalvotes+=$row['votes'];
   $polloptions[]=$row;
  }
  
  $i=1;
  if(count($polloptions)) {
   while(list($key,$row)=each($polloptions)) {
    $row['polloption']=htmlconverter(textwrap($row['polloption']));
    if($totalvotes) {
     $percent_float $row['votes']*100/$totalvotes;
     $percent number_format($percent_float2);
     $percent_int floor($percent_float)*3;
     $percent_int += 1; 
    }
    else $percent $percent_int 0; 
    eval ("\$thread_poll_resultbit .= \"".$tpl->get("thread_poll_resultbit")."\";");
    if($i==5$i=0;
    $i++;
   }
  }
 
  eval ("\$lang->items['LANG_THREAD_POLL_VOTES'] = \"".$lang->get4eval("LANG_THREAD_POLL_VOTES")."\";");
  eval ("\$thread_poll = \"".$tpl->get("thread_poll_result")."\";");
 }
 else {
  if($poll['choicecount']>1$inputtype="checkbox";
  else $inputtype="radio";
 
  $result=$db->unbuffered_query("SELECT * FROM bb".$n."_polloptions WHERE pollid='$thread[pollid]' ORDER BY showorder ASC");
  while($row=$db->fetch_array($result)) {
   $row['polloption']=htmlconverter(textwrap($row['polloption']));
   eval ("\$thread_pollbit .= \"".$tpl->get("thread_pollbit")."\";");
  }
 
  eval ("\$thread_poll = \"".$tpl->get("thread_poll")."\";");
 }
}

if($board['allowratings']==1) {
 $colors createGradient($style['gradientleft'],$style['gradientmiddle'],$style['gradientright']);
 if($thread['voted'] && $thread['voted']>=$showvotes$threadrating=threadrating($thread['votepoints'],$thread['voted']);
}
else $threadrating="";

if($board['closed']==0) eval ("\$newthread = \"".$tpl->get("board_newthread")."\";");
if($thread['closed']!=0) eval ("\$addreply = \"".$tpl->get("thread_closed")."\";");
elseif($board['closed']==0) eval ("\$addreply = \"".$tpl->get("thread_addreply")."\";");

$thread['topic']=htmlconverter(textwrap($thread['topic']));

if($board['emailnotify']==&& $board['countemails']!=0$db->unbuffered_query("UPDATE bb".$n."_subscribeboards SET countemails=0 WHERE userid = '".$wbbuserdata['userid']."' AND boardid = '".$boardid."'",1);
if($thread['emailnotify']==&& $thread['countemails']!=0$db->unbuffered_query("UPDATE bb".$n."_subscribethreads SET countemails=0 WHERE userid = '".$wbbuserdata['userid']."' AND threadid = '".$threadid."'",1);   

require "quickreply.php";
eval("\$tpl->output(\"".$tpl->get("thread")."\");");
?>


meine .htaccess
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
RewriteEngine on
RewriteBase /html/wbb2
RewriteRule ^(.*)\.(htm|html)$ mod_rewrite.php?file=$1

oder

RewriteEngine on
RewriteBase /
RewriteRule ^(.*)\.(htm|html)$ mod_rewrite.php?file=$1

beides geht nicht. mein board liegt aug /html/wbb2. meine domain verweist direkt auf den wbb2 ordner.

schönen dank im voraus für die hilfe

gruss

christoph