Leon: Geordnete Url durch Mod_Rewrite

Beitrag lesen

Hallo Christian,

das mit dem Slash hat nicht funktioniert. Auf die Errorlog kann ich nicht zugreifen. Gibt es dafür nicht ein Testscript? Der Service vom Provider ist zu vergessen. Ich weiß mir echt nicht zu helfen, aber ich brauche diese Lösung unbedingt.

Ich habe bereits in einem anderen Forum eine Lösung gefunden die nicht funktioniert.

Da wird noch mit einer mod_rewrite.php gearbeitet. Hier die kurze Anleitung von www.woltlab.de

  1. Du erstellst eine Datei .htaccess in deinem Boardverzeichnis (wenn die Datei noch nicht existiert)

  2. Da fügst du folgenden Code ein: code:

RewriteEngine On
RewriteRule ^([^/]+)/(.+)/x.wbb$ mod_rewrite.php?$1&........................$2 [L]
RewriteRule ^([^/]+)/x.wbb$ mod_rewrite.php?$1 [L]
RewriteRule ^([^/]+)x.wbb$ mod_rewrite.php?$1 [L]

  1. Du erstellst eine Datei mod_rewrite.php in deinem Boardverzeichnis

  2. Da fügst du folgenden Code ein: php:

<?
if(!$_SERVER['QUERY_STRING']) die('kein direktaufruf erlaubt!');
unset($filename);
if(strpos($_SERVER['QUERY_STRING'],'&........................')===false)
{
 #echo "kein querystring\n<br>\n";
 #echo "dateiname: ".$_SERVER['QUERY_STRING'];
 $filename=str_replace('..','',$_SERVER['QUERY_STRING']);
}
else
{
 list($filename,$querystring)=explode('&........................',$_SERVER['QUERY_STRING']);
 #echo "querystring: ".$querystring;
 #echo "\n<br>\n";
 #echo "dateiname: ".$filename;
 #echo "\n<br>\n";
 $http_querystring=explode('/',$querystring);
 while(list(,$value)=each($http_querystring))
 {
  if(!strlen($value) || !strlen(current($http_querystring)))
  {
   continue;
  }
  $varname=$value;
  $varvalue=current($http_querystring);
  $_GET[$varname]=$varvalue;
  $_REQUEST[$varname]=$varvalue;
  #echo $value.'='.current($http_querystring)."\n<br>\n";
  next($http_querystring);
 }
}
include './'.$filename/*.'.php'*/;
?>

Füge in dein headinclude-Template folgenden Code ein: code:
1:

<base href="http://url/zu/deinem/boardverzeichnis/">

  1. Jetzt änderst du in deinen Templates alle Links, die statt & bzw. = einen / verwenden sollen so ab:

Aus
board.php?boardid=$row[boardid]&sid=$session[hash]
wird:
board/boardid/$row[boardid]/sid/$session[hash]/x.wbb

Wenn irgendwo in einem Link ./ verwendet wird, musst du es entfernen.
Da sich auf Links innerhalb von JavaScripts (Popups) <base href> nicht auswirkt musst du da vor den Dateinamen den kompletten URL-Pfad setzen.

Leon