Seite 1 von 1

Wie mod rewrite anwenden?

Verfasst: 31.07.2010, 15:22
von darkeye
Hallo,

ich hatte bis heute früh ein phpBB Forum mit suchmaschinenfreundlichen Urls, wie z.B. forum/katzenrassen-f26/die-abessinier-t644.html

Dazu hatte ich folgende Regeln in meiner htaccess:
RewriteEngine on
#if forum is in /forum/ replace with RewriteBase /forum/
RewriteBase /forum/

RewriteRule ^(.*)-f([0-9]*)/(.*)-t([0-9]*)-s([0-9]*).html viewtopic.php?f=$2&t=$4&start=$5&%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*)/(.*)-t([0-9]*).html viewtopic.php?f=$2&t=$4&%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*)/index-s([0-9]*).html viewforum.php?f=$2&start=$3&%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*)/ viewforum.php?f=$2&%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*) viewforum.php?f=$2&%{QUERY_STRING} [L]

Nun habe ich ein Update auf ein anderes phpBB Forum mit anderen SEO Urls gemacht (forum/topic3942.html). Die aktuelle htaccess sieht so aus:
# RewriteRule ^forum/forum\.html$ /forum/index.php [QSA,L,NC]
# FORUM ALL MODES
RewriteRule ^forum/(forum|[a-z0-9_-]*-f)([0-9]+)(-([0-9]+))?\.html$ /forum/viewforum.php?f=$2&start=$4 [QSA,L,NC]
# TOPIC WITH VIRTUAL FOLDER ALL MODES
RewriteRule ^forum/(forum|[a-z0-9_-]*-f)([0-9]+)/(topic|[a-z0-9_-]*-t)([0-9]+)(-([0-9]+))?\.html$ /forum/viewtopic.php?f=$2&t=$4&start=$6 [QSA,L,NC]
# GLOBAL ANNOUNCES WITH VIRTUAL FOLDER ALL MODES
RewriteRule ^forum/announces/(topic|[a-z0-9_-]*-t)([0-9]+)(-([0-9]+))?\.html$ /forum/viewtopic.php?t=$2&start=$4 [QSA,L,NC]
# TOPIC WITHOUT FORUM ID & DELIM ALL MODES
RewriteRule ^forum/([a-z0-9_-]*)/?(topic|[a-z0-9_-]*-t)([0-9]+)(-([0-9]+))?\.html$ /forum/viewtopic.php?forum_uri=$1&t=$3&start=$5 [QSA,L,NC]
# PHPBB FILES ALL MODES
RewriteRule ^forum/resources/[a-z0-9_-]+/(thumb/)?([0-9]+)$ /forum/download/file.php?id=$2&t=$1 [QSA,L,NC]
# PROFILES ALL MODES WITH ID
RewriteRule ^forum/(member|[a-z0-9_-]*-u)([0-9]+)\.html$ /forum/memberlist.php?mode=viewprofile&u=$2 [QSA,L,NC]
# USER MESSAGES ALL MODES WITH ID
RewriteRule ^forum/(member|[a-z0-9_-]*-u)([0-9]+)-(topics|posts)(-([0-9]+))?\.html$ /forum/search.php?author_id=$2&sr=$3&start=$5 [QSA,L,NC]
# GROUPS ALL MODES
RewriteRule ^forum/(group|[a-z0-9_-]*-g)([0-9]+)(-([0-9]+))?\.html$ /forum/memberlist.php?mode=group&g=$2&start=$4 [QSA,L,NC]
# POST
RewriteRule ^forum/post([0-9]+)\.html$ /forum/viewtopic.php?p=$1 [QSA,L,NC]
# ACTIVE TOPICS
RewriteRule ^forum/active-topics(-([0-9]+))?\.html$ /forum/search.php?search_id=active_topics&start=$2&sr=topics [QSA,L,NC]
# UNANSWERED TOPICS
RewriteRule ^forum/unanswered(-([0-9]+))?\.html$ /forum/search.php?search_id=unanswered&start=$2&sr=topics [QSA,L,NC]
# NEW POSTS
RewriteRule ^forum/newposts(-([0-9]+))?\.html$ /forum/search.php?search_id=newposts&start=$2&sr=topics [QSA,L,NC]
# UNREAD POSTS
RewriteRule ^forum/unreadposts(-([0-9]+))?\.html$ /forum/search.php?search_id=unreadposts&start=$2 [QSA,L,NC]
# THE TEAM
RewriteRule ^forum/the-team\.html$ /forum/memberlist.php?mode=leaders [QSA,L,NC]


Weiss einer was ich jetzt noch zusätzlich in die htaccess schreiben muss, damit die alten SEO Urls per mod rewrite in die neuen Urls 'umgeschrieben' werden?

Grüße,
darkeye

Verfasst:
von

Verfasst: 31.07.2010, 15:45
von Synonym
Aus dem
RewriteRule ^(.*)-f([0-9]*)/index-s([0-9]*).html viewforum.php?f=$2&start=$3&%{QUERY_STRING} [L]
müsste also quasi das werden
RewriteRule ^forum/(forum|[a-z0-9_-]*-f)([0-9]+)(-([0-9]+))?\.html$ /forum/viewforum.php?f=$2&start=$4 [QSA,L,NC]
Also müsste
RewriteRule ^(.*)-f([0-9]*)/index-s([0-9]*).html
weitergeleitet werden nach
RewriteRule ^forum/(forum|[a-z0-9_-]*-f)([0-9]+)(-([0-9]+))?\.html$

Also quasi in etwa so (ungetestet)
RewriteRule ^forum/(.*)-f([0-9]*)/index-s([0-9]*)\.html /forum/$1-f$2-$3.html [R=301,L]
$1 ist der Name des Forums.
$2 die ID des Forums
$3 der Startwert

Analog dazu müsste es mit "RewriteRule ^(.*)-f([0-9]*)/" und "RewriteRule ^(.*)-f([0-9]*)" genauso gehen, nur dass da kein Startwert vorhanden ist und er in der Zielurl als leer bleibt oder einen Default-Wert hat, keine Ahnung wie Dein System arbeitet.

Wobei das natürlich auch nur ein Ratespiel ist, da man nicht weiß wie die alten und wie die jeweiligen neuen URLs aussehen. Dein Beispiel oben sind sicherlich zwei unterschiedliche Ziele und nicht nur zwei unterschiedliche SEO-URLs mit gleichem Ziel. Und ein Beispiel für das Forum fehlt komplett.