@wolli
das klingt plausibel; nur leider fehlt mir da der Ansatz. Ich poste euch mal meinen Teil der .htaccess und das Script dazu.
.htaccess
Code: Alles auswählen
RewriteCond %{QUERY_STRING} ^topic=([0-9]*)$
RewriteRule ^(.*)$ seo4smf-redirect.php?t=%1 [R=301,L]
RewriteCond %{QUERY_STRING} ^topic=([0-9]*).([0-9]*)
RewriteRule ^(.*)$ seo4smf-redirect.php?t=%1 [R=301,L]
RewriteCond %{QUERY_STRING} ^board=([0-9]*).([0-9]*)
RewriteRule ^(.*)$ seo4smf-redirect.php?b=%1 [R=301,L]
RewriteCond %{QUERY_STRING} ^action=profile;u=([0-9]*);(.*)$
RewriteRule ^(.*)$ seo4smf-redirect.php?u=%1;param=%2 [R=301,L]
RewriteCond %{QUERY_STRING} ^action=profile;u=([0-9]*)
RewriteRule ^(.*)$ seo4smf-redirect.php?u=%1 [R=301,L]
#Rewrite Old urls
RewriteRule ^index.php/board,(.*).html seo4smf-redirect.php?b=$1 [R=301,L]
RewriteRule ^index.php/board,(.*).html;(.*) seo4smf-redirect.php?b=$1&o=$2 [R=301,L]
RewriteRule ^index.php/topic,(.*).html seo4smf-redirect.php?t=$1 [R=301,L]
RewriteRule ^index.php/topic,(.*).html;(.*) seo4smf-redirect.php?t=$1&o=$2 [R=301,L]
#Bad Url's
RewriteCond %{REQUEST_URI} ^(.*)\.html$
RewriteCond %{REQUEST_URI} !^(.+)/(.*)-t([0-9]*)\.([0-9]*).html$
RewriteRule ^(.*)-t([0-9]*)\.([0-9]*)\.html seo4smf-redirect.php?t=$2 [R=301,L]
RewriteRule ^(.*)/-t(.*).html seo4smf-redirect.php?t=$2 [R=301,L]
RewriteRule ^-b(.*)/$ seo4smf-redirect.php?b=$1 [R=301,L]
RewriteRule ^-b(.*)/(.*)$ seo4smf-redirect.php?b=$1 [R=301,L]
RewriteRule ^(.*)/-b(.*)/$ seo4smf-redirect.php?b=$2 [R=301,L]
#New board URL's
RewriteRule ^(.*)-b([0-9]*)\.([0-9]*)/;(.*) index.php?dummy=1&board=$2.$3&$4 [L]
RewriteRule ^(.*)-b([0-9]*)\.([0-9]*)/$ index.php?dummy=2&board=$2.$3 [L]
RewriteRule ^(.*)-b([0-9]*)\.([0-9])$ index.php?dummy=2&board=$2.$3 [L]
#New topic URL's
RewriteRule ^(.*)-t([0-9]*)\.([0-9]*)\.html;((\?:from|msg|new)[0-9]*);(.*)$ index.php?dummy=1&topic=$2.$4&$6 [L]
RewriteRule ^(.*)-t([0-9]*)\.([0-9]*)\.html;((\?:from|msg|new)[0-9]*) index.php?dummy=1&topic=$2.$4 [L]
RewriteRule ^(.*)-t([0-9]*)\.([0-9]*)\.html;(.*)$ index.php?dummy=1&topic=$2.$3&$4 [L]
RewriteRule ^(.*)-t([0-9]*)\.([0-9]*)\.html$ index.php?dummy=1&topic=$2.$3 [L]
#New profiles URL's
RewriteRule ^(.*)-u([0-9]*)\.html;sa,(.*);start,([0-9]*);delete,([0-9]*);sesc,([a-z0-9]*)$ index.php?dummy=1&action=profile;u=$2;sa=$3;start=$4;delete=$5;sesc=$6 [L]
RewriteRule ^(.*)-u([0-9]*)\.html;sa,(.*);start,([0-9]*)$ index.php?dummy=1&action=profile;u=$2;sa=$3;start=$4 [L]
RewriteRule ^(.*)-u([0-9]*)\.html;sa,(.*)$ index.php?dummy=1&action=profile;u=$2;sa=$3 [L]
RewriteRule ^(.*)-u([0-9]*)\.html index.php?dummy=1&action=profile;u=$2 [L]
#New Tinyportal Articles URL's
RewriteRule ^(.*)-p([0-9]*)\.html index.php?dummy=1&page=$2 [L]
#New action Url's - uncomment if you use beautifying url actions
#RewriteRule ^(.*)\.html(.*)$ index.php?dummy=1;action=$1;$2 [L]
#RewriteRule ^(.*)\.html$ index.php?dummy=1;action=$1 [L]
#Sitemaps
RewriteRule sitemap.xml sitemaps.php [L]
RewriteRule urllist.txt urllist.php [L]
Code: Alles auswählen
$topic = $_GET['t'];
$board = $_GET['b'];
$other = $_GET['o'];
$user = $_GET['u'];
$tpage = $_GET['p'];
$action = $_GET['a'];
$param = $_GET['param'];
if (isset($modSettings['seo4smf_split_char']))
$split_char = $modSettings['seo4smf_split_char'];
else
$split_char = "_";
if (empty($topic) && empty($board) && empty($user) && empty($tpage) && empty($action))
{
die ('No parameter given !');
}
else
{
if (strpos($topic, '/') !== false) //until now only VisualWarning is adding /
{
list($topic, $other) = explode("/", $topic);
}
list($topic, $trest) = explode('.', $topic);
list($board, $brest) = explode('.', $board);
if (!empty($action))
{
$scripturl1 = str_replace('/index.php', '', $scripturl);
$params = $_SERVER['QUERY_STRING'];
$sizep = strlen($params);
$pos = strpos($params, ";");
if ($pos > 0)
{
$params = substr($params, $pos+1, $sizep);
}
if ($params == "")
$uri = $action.".html";
else
$uri = $action.".html;".$params;
$url = $scripturl1.'/'.$uri;
}
if (!empty($topic))
{
$query = db_query("
SELECT m.ID_TOPIC, m.subject ,b.ID_BOARD, b.name
FROM {$db_prefix}messages AS m, {$db_prefix}boards AS b
WHERE m.ID_TOPIC = $topic
AND m.ID_BOARD = b.ID_BOARD
LIMIT 1", __FILE__, __LINE__);
$row = mysql_fetch_assoc($query);
mysql_free_result($query);
$topic_name = remove_signs($row['subject']);
$topic_name = strtolower(str_replace(" ", $split_char, $topic_name));
$board_name = remove_signs($row['name']);
$board_name = strtolower(str_replace(" ", $split_char, $board_name));
if (empty($topic_name)) $topic_name="empty";
if (!empty($other))
{
if (is_numeric($trest))
$uri = ($modSettings['seo4smf_topic_board'] != 'on'?"$board_name/":'').$topic_name.'-t'.$topic.'.'.$trest.'.html;'.$other;
else
if (!empty($trest))
$uri = ($modSettings['seo4smf_topic_board'] != 'on'?"$board_name/":'').$topic_name.'-t'.$topic.'.0.html;'.$trest.';'.$other;
else
$uri = ($modSettings['seo4smf_topic_board'] != 'on'?"$board_name/":'').$topic_name.'-t'.$topic.'.0.html;'.$other;
}
else
{
if (is_numeric($trest))
$uri = ($modSettings['seo4smf_topic_board'] != 'on'?"$board_name/":'').$topic_name.'-t'.$topic.'.'.$trest.'.html';
else
{
if (!empty($trest))
$uri = ($modSettings['seo4smf_topic_board'] != 'on'?"$board_name/":'').$topic_name.'-t'.$topic.'.0.html;'.$trest;
else
$uri = ($modSettings['seo4smf_topic_board'] != 'on'?"$board_name/":'').$topic_name.'-t'.$topic.'.0.html';
}
}
$scripturl1 = str_replace('/index.php', '', $scripturl);
$url = $scripturl1.'/'.$uri;
}
if (!empty($board))
{
$query = db_query("
SELECT name FROM {$db_prefix}boards AS b
WHERE ID_BOARD = $board
LIMIT 1", __FILE__, __LINE__);
$row = mysql_fetch_assoc($query);
mysql_free_result($query);
$board_name = remove_signs($row['name']);
$board_name = strtolower(str_replace(" ", $split_char, $board_name));
$uri = $board_name.'-b'.$board.'.0/';
$scripturl1 = str_replace("/index.php", "", $scripturl);
$url = $scripturl1.'/'.$uri;
}
if ((!empty($user)) && empty($action))
{
$request = db_query("SELECT memberName FROM {$db_prefix}members where ID_MEMBER=".$user." limit 1", __FILE__, __LINE__);
$name = mysql_fetch_assoc($request);
mysql_free_result($request);
$scripturl1 = str_replace("/index.php", "", $scripturl);
$uri = "profiles/".$name['memberName']."-u".$user.".html";
if (!empty($param))
{
$param = str_replace("=", ",", $param);
$uri .= ";".$param;
}
$url = $scripturl1.'/'.$uri;
}
if (!empty($tpage))
{
$request = db_query("SELECT subject FROM {$db_prefix}tp_articles where id=".$tpage." limit 1", __FILE__, __LINE__);
$row = mysql_fetch_assoc($request);
mysql_free_result($request);
$scripturl1 = str_replace("/index.php", "", $scripturl);
$page_name = remove_signs($row['subject']);
$page_name = strtolower(str_replace(" ", $split_char, $page_name));
$uri = $page_name."-p".$tpage.".html";
$url = $scripturl1.'/'.$uri;
}
}
if (!empty($url))
{
header('HTTP/1.1 301 Moved Permanently');
header('Location: '.$url);
exit;
}
else
{