Folgend eine Beschreibung, wie man für den Style Prosilver die wichtigsten internen Links beim phpBB3 Version 3.0.4 mit kurzen URLs ausstattet, beziehungsweise mit Short URLs. Sollte was nicht bei der jeweils neuesten phpBB-Version funktionieren, bitte mir Bescheid sagen, damit ich es anpassen kann!
Kurze URLs sind nicht suchmaschinenfreundlich, weil durch folgende Änderung die Anzahl der URLs, die jeweils zur selben Seite führen, noch größer wird, als sie beim phpBB3 schon sind. Dieses Problem löst man aber, indem man kanonische URLs integriert: Klick! Nachdem ich aber weitere kurze URLs für Forumübersichtsseiten eingeführt haben werde, werden für diese auch kurze kanonische URLs verfügbar sein.
Sämtliche von mir vorgeschlagenen Änderungen sind nicht dadurch entstanden, dass ich mich jeweils sporadisch im Internet informierte, wie jeweils welcher PHP-Code funktioniert; sondern noch viel schlimmer. Nämlich durch jeweiliges ewiges Herumprobieren bis zum Abwinken. :mrgreen:
Kurze URLs sind nicht suchmaschinenfreundlich, weil durch folgende Änderung die Anzahl der URLs, die jeweils zur selben Seite führen, noch größer wird, als sie beim phpBB3 schon sind. Dieses Problem löst man aber, indem man kanonische URLs integriert: Klick! Nachdem ich aber weitere kurze URLs für Forumübersichtsseiten eingeführt haben werde, werden für diese auch kurze kanonische URLs verfügbar sein.
Sämtliche von mir vorgeschlagenen Änderungen sind nicht dadurch entstanden, dass ich mich jeweils sporadisch im Internet informierte, wie jeweils welcher PHP-Code funktioniert; sondern noch viel schlimmer. Nämlich durch jeweiliges ewiges Herumprobieren bis zum Abwinken. :mrgreen:
Bei Thread- und Beitrags-IDs kann man wahlweise die kurzen URLs entweder ohne oder mit Forums-ID ausgeben lassen. Letztes hat den Vorteil, dass User bei der Online-Anzeige des jeweiligen Forums erscheinen.
Andernfalls erscheinen sie nur in der Online-Anzeige auf der Indexseite. Änderungen in PHP-Dateien werden sofort wirksam. Aber Änderungen in Template- beziehungsweise Html-Dateien (Ordner styles) werden jeweils erst nach Aktualisierung des Styles prosilver im Adminbereich unter >STYLES - Templates<.
Wenn man beispielsweise bei der Foren-Übersicht auf den Link zu einem Forum oder einer Kategorie klickt, erscheint eine Übersicht mit den Threads. Oben der Link zum Forum oder zur Kategorie mit dem Foren- oder Kategorietitel soll das Forum kurz ausgeben in der Art http:// d o m a i n . d e /f17 in der Datei viewforum.php die Zeile
Andernfalls erscheinen sie nur in der Online-Anzeige auf der Indexseite. Änderungen in PHP-Dateien werden sofort wirksam. Aber Änderungen in Template- beziehungsweise Html-Dateien (Ordner styles) werden jeweils erst nach Aktualisierung des Styles prosilver im Adminbereich unter >STYLES - Templates<.
Wenn man beispielsweise bei der Foren-Übersicht auf den Link zu einem Forum oder einer Kategorie klickt, erscheint eine Übersicht mit den Threads. Oben der Link zum Forum oder zur Kategorie mit dem Foren- oder Kategorietitel soll das Forum kurz ausgeben in der Art http:// d o m a i n . d e /f17 in der Datei viewforum.php die Zeile
- Code: Alles auswählen
'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=$forum_id&start=$start"),
ersetzen durch Folgende!
- Code: Alles auswählen
'U_VIEW_FORUM' => "{$phpbb_root_path}f{$forum_id}",
In der Datei .htaccess im Root-Verzeichnis muss folgendes eingefügt werden, damit der Klick auf die kurze URL von Mod_Rewrite in die für das Forum verarbeitbare Langform umgewandelt wird. Der Apache-Server muss Mod_Rewrite unterstützen.
- Code: Alles auswählen
RewriteEngine On
RewriteBase /
RewriteRule ^f([0-9]+)$ viewforum.php?f=$1 [L]
Ist das Forum in einem Ordner, muss dieser hinter RewriteBase / angegeben werden; also beispielsweise RewriteBase /forum/
Die Rechteckklammer mit dem Inhalt 0-9 bedeuten die Ziffern 0 bis 9. Das + hinter dieser rechteckigen Klammer ist eine Mengenangabe, die sich auf diese Rechteckklammer bezieht; dass also mindestens eine Ziffer an dieser Stelle sein muss.
Das Dollar-Zeichen $ bedeutet, dass die URL an dieser Stelle enden muss; sonst wird sie nicht von dieser RewriteRule verarbeitet. $1 ist ein Platzhalter, der bewirkt, dass die erste Klammer des linken Teils der Umwandlungsanweisung an dieser Stelle eingefügt wird.
Der rechte Teil wird in der Regel relativ angegeben, wodurch in diesem Fall die Kurzform der URL im Browser erscheint. Gibt man die Langform an, erscheint die Langform im Browser. L bedeutet, dass die umgewandelte URL kein weiteres mal umgewandelt werden darf..
Damit beim Aufruf der Indexseite die Foren eine kurze URL haben; und auch die Unterforen, wenn man ein Forum öffnet; ersetze in der Datei includes/functions_display.php jeweils die folgende zwei mal vorkommende Zeile! Falsch!
- Code: Alles auswählen
$u_viewforum = append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $row['forum_id']);
=>
- Code: Alles auswählen
$u_viewforum = "{$phpbb_root_path}f{$row['forum_id']}";
Mache gegebenenfalls diese Ersetzung rückgängig und ersetze stattdessen!
- Code: Alles auswählen
'U_VIEWFORUM' => $u_viewforum,
=>
- Code: Alles auswählen
'U_VIEWFORUM' => "{$phpbb_root_path}f{$row['forum_id']}",
Damit beim Aufruf der Indexseite auch die Links der Unterforen als kurze URLs angezeigt werden, ersetze in der Datei includes/functions_display.php Folgendes!
- Code: Alles auswählen
'link' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $subforum_id),
=>
- Code: Alles auswählen
'link' => "{$phpbb_root_path}f{$subforum_id}",
Um Forenlinks in der Navigation mit kurzen Links auszustatten, führe in der Datei includes/functions_display.php folgende zwei Ersetzungen durch!
- Code: Alles auswählen
'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $parent_forum_id))
=>
- Code: Alles auswählen
'U_VIEW_FORUM' => "{$phpbb_root_path}f{$parent_forum_id}")
- Code: Alles auswählen
'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $forum_data['forum_id']))
=>
- Code: Alles auswählen
'U_VIEW_FORUM' => "{$phpbb_root_path}f{$forum_data['forum_id']}")
Damit die Links von Kategorien kurze URLs haben, ersetze in der Datei includes/functions_display.php folgende Zeile!
- Code: Alles auswählen
'U_VIEWFORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $row['forum_id']))
=>
- Code: Alles auswählen
'U_VIEWFORUM' => "{$phpbb_root_path}f{$row['forum_id']}")
Damit auch die einzelnen Seiten der Forenübersicht kurze URLs haben, wenn also ein Forum beziehungsweise ein Unterforum so viele Threads hat, dass sich mehrere Forenübersichtsseiten ergeben, ist es etwas schwieriger.
Weil jeweils mehrere URLs zur selben Forenübersicht führen, wird einem bei den Google Webmaster Tools empfohlen, es zu vermeiden, dass unterschiedliche Seiten denselben Titel haben. Weil unterschiedliche URLs zur selben Seite führen, hält Google diese Seite fälschlich für unterschiedliche Seiten mit dem selben Title.
Weil mehrere Seiten einer Forenübersicht jeweils denselben Titel haben, kann man dies so ändern, dass diese nicht mehr denselben Titel haben: Klick! Es gibt dann aber noch das zuvor genannte Problem, nämlich das des doppeltem Kontents; wenn also mehrere URLs zur selben Seite führen.
Dies vermeidet man, indem man kanonische URLs integriert: Klick! Damit jede Seite einer Forenübersicht eine andere kanonische URL hat, weil es jeweils eine andere Seite ist, muss man von den Links ausgehen, die zu den einzelnen Seiten einer Forenübersicht führen.
Deswegen sollten auch diese Links kurz sein, damit auch die kanonischen URLs kurz sein können. Falls eine Forenübersicht bei Google verlinkt ist, benutzt Google die kanonischen URL, was viel besser aussieht. Kopiere in der Datei includes/functions.php den großen Block von
- Code: Alles auswählen
function generate_pagination($base_url, $num_items, $per_page, $start_item, $add_prevnext_text = false, $tpl_prefix = '')
bis
- Code: Alles auswählen
return $page_string;
}
und füge diesen darunter ein, sodass dieser Block nun zwei mal vorhanden ist. Ändere den zweiten Block auf nachfolgende Weise! Ersetze jeweils
- Code: Alles auswählen
function generate_pagination
=>
- Code: Alles auswählen
function generate_pagination_2
- Code: Alles auswählen
$url_delim = (strpos($base_url, '?') === false) ? '?' : '&';
=>
- Code: Alles auswählen
$url_delim = (strpos($base_url, '?') === false) ? '' : '&';
Folgender Code kommt im neu hinzugefügten Block zwei mal vor (insgesamt 4 mal) , sodass man zur Sicherheit bei beiden Vorkommen nur im hinzugefügten Block wie folgt ersetzt, obwohl glaube ich nur bei einem der beiden Vorkommen ersetzt werden bräuchte; kann aber nicht schaden, dies bei beiden Vorkommen zu ersetzen.
- Code: Alles auswählen
$page_string .= ($i == $on_page) ? '<strong>' . $i . '</strong>' : '<a href="' . $base_url . "{$url_delim}start=" . (($i - 1) * $per_page) . '">' . $i . '</a>';
=>
- Code: Alles auswählen
$page_string .= ($i == $on_page) ? '<strong>' . $i . '</strong>' : '<a href="' . $base_url . "{$url_delim}s" . (($i - 1) * $per_page) . '">' . $i . '</a>';
Nachdem auf diese Weise die Funktion function generate_pagination_2 definiert wurde, kann jetzt in der Datei viewforum.php die eigentliche Kürzung der URL vorgenommen werden. Ersetze in dieser Datei!
- Code: Alles auswählen
'PAGINATION' => generate_pagination(append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=$forum_id" . ((strlen($u_sort_param)) ? "&$u_sort_param" : '')), $topics_count, $config['topics_per_page'], $start),
=>
- Code: Alles auswählen
'PAGINATION' => generate_pagination_2(("{$phpbb_root_path}" . "f$forum_id" . ((strlen($u_sort_param)) ? "&$u_sort_param" : '')), $topics_count, $config['topics_per_page'], $start),
Erklärung: Die Entfernung der Funktion append_sid bewirkt nicht nur, dass eine ellenlange Sid an die URL angefügt wird, sondern realisiert auch das &-Zeichen. Weil dieses nicht mehr vorhanden ist, würde die Funktion generate_pagination dieses Zeichen durch ein Fragezeichen ersetzen.
Die neu hinzugefügte Funktion generate_pagination_2 setzt aber bei fehlendem & kein Fragezeichen. Und im Gegensatz zur alten Funktion generate_pagination erzeugt die neue Funktion nicht 'start=', sondern nur den Kleinbuchstaben 's'.
(tart=)? sorgt dafür, dass, wenn man auf den Link zu einem Forum klickt, wo die Threads aufgelistet sind, damit unten rechts der Link 'Nächste' umgewandelt wird. Beispielsweise der Link f4start=50 wird dann wie f4s50 umgewandelt. Ich habe darauf verzichtet, dass das Forum auch diesen Link ganz kurz anzeigt, weil dieser nicht wichtig ist; weil diesen kaum jemand verlinken wird.
- Code: Alles auswählen
RewriteRule ^f([0-9]+)s(tart=)?([0-9]+)$ viewforum.php?f=$1&start=$3 [L]
Kurze Thread-URLs ohne Suchergebnisse
Wenn man auf ein Forum klickt, werden Threads aufgelistet. Damit diese Threads kurze URLs haben in der Art http:// d o m a i n . d e /75 ersetze in der Datei viewforum.php folgende Zeile!
- Code: Alles auswählen
$view_topic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . (($row['forum_id']) ? $row['forum_id'] : $forum_id) . '&t=' . $topic_id);
=>
- Code: Alles auswählen
$view_topic_url = "{$phpbb_root_path}" . $topic_id;
In der Datei .htaccess muss hierzu folgendes eingefügt werden:
- Code: Alles auswählen
RewriteRule ^t?([0-9]+)$ viewtopic.php?t=$1 [L]
Das Fragezeichen hinter dem t bedeutet, dass das t nicht vorhanden sein muss, falls man eine URL der Form http:// d o m a i n . d e /t75 aufruft (t wie Thread). Damit diese kurzen URLs auch jeweils die Forums-ID enthalten in der Art http:// d o m a i n . d e /f22t75 , ersetze diese Zeile anstatt der vorigen Zeile durch folgende!
- Code: Alles auswählen
$view_topic_url = "{$phpbb_root_path}" . 'f' . (($row['forum_id']) ? $row['forum_id'] : $forum_id) . 't' . $topic_id;
In der Datei .htaccess muss Folgendes eingefügt werden. Aber der vorige Eintrag sollte am besten auch vorhanden sein, falls ein User eine URL manuell umschreibt; indem er die Forums-ID aus der URL entfernt und diese URL dann verlinkt.
- Code: Alles auswählen
RewriteRule ^f([0-9]+)t([0-9]+)$ viewtopic.php?f=$1&t=$2 [L]
Wenn man einen Thread aufruft, und dann oben die Verlinkung des Threadtitels eine kurze URL sein soll der Art http:// d o m a i n . d e /12, füge in der Datei viewtopic.php unter folgender Zeile
- Code: Alles auswählen
'U_VIEW_TOPIC' => $viewtopic_url,
folgende Zeile in einer neuen Zeile ein!
- Code: Alles auswählen
'U_VIEW_TOPIC_K' => "{$phpbb_root_path}{$topic_id}",
Falls die Forums-ID mit in der kurzen URL enthalten sein soll, füge anstatt der vorigen, folgende Zeile ein!
- Code: Alles auswählen
'U_VIEW_TOPIC_K' => "{$phpbb_root_path}f{$forum_id}t{$topic_id}",
Ersetze in der Datei styles/prosilver/viewforum_body.html oben folgende Zeile! Also nur U_VIEW_TOPIC durch U_VIEW_TOPIC_K ersetzen!
- Code: Alles auswählen
<h2><a href="{U_VIEW_TOPIC}">{TOPIC_TITLE}</a></h2>
=>
- Code: Alles auswählen
<h2><a href="{U_VIEW_TOPIC_K}">{TOPIC_TITLE}</a></h2>
Kurze Beitrags-URLs ohne Suchergebnisse
Wenn man einen Thread aufruft, und dann jeweils oben in den Beiträgen alle Links zu diesen Beiträgen in Kurzform sind in folgender Art sein sollen.
http:// d o m a i n . d e /b123
Erst mal den Link der kleinen Grafik oben Links ändern! Ersetze dazu in der Datei viewtopic.php folgende Zeile!
- Code: Alles auswählen
'U_MINI_POST' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'p=' . $row['post_id']) . (($topic_data['topic_type'] == POST_GLOBAL) ? '&f=' . $forum_id : '') . '#p' . $row['post_id'],
=>
- Code: Alles auswählen
'U_MINI_POST' => "{$phpbb_root_path}b{$row['post_id']}",
- Code: Alles auswählen
RewriteRule ^b([0-9]+)$ viewtopic.php?p=$1#p$1 [NE,L]
Das Flag NE bedeutet "No Escape" und bewirkt, dass kein Zeichen maskiert beziehungsweise umgewandelt wird, damit in diesem Fall das Rautezeichen # genau so angezeigt wird in der URL, damit es zum jeweiligen Beitrag automatisch scrollt.
Falls das Scrolling nach Aufruf der Seite nicht geht, wie dies in meinem auf Pytal.de installierten Forum ist, ganz rechts das R angeben oder im rechten Teil der Umwandlungsanweisung die vollständige URL angeben!
- Code: Alles auswählen
RewriteRule ^b([0-9]+)$ viewtopic.php?p=$1#p$1 [NE,L,R]
Damit diese kurzen URLs auch jeweils die Forums-ID enthalten in der Art http:// d o m a i n . d e /f22b75 , ersetze diese Zeile anstatt durch die vorige Zeile durch folgende!
- Code: Alles auswählen
'U_MINI_POST' => "{$phpbb_root_path}f{$forum_id}b{$row['post_id']}",
- Code: Alles auswählen
RewriteRule ^f([0-9]+)b([0-9]+)$ viewtopic.php?f=$1&p=$2#p$2 [NE,L]
Falls die Seite nicht richtig aufgerufen wird, wie im vorigen Fall im rechten Teil der RewriteRule die URL absolut angeben!
Damit auch darüber die URL des Beitragtitels, falls vorhanden, als kurze URL erscheint, ersetze für den Style prosilver in der Datei styles/prosilver/template/viewtopic_body.html folgende Zeile! Also nur #p{postrow.POST_ID} durch {postrow.U_MINI_POST} ersetzen! Stattdessen kann man es auch durch b{postrow.U_MINI_POST} ersetzen. In diesem Fall ist der Beitragstitel ohne Forums-ID verlinkt.
- Code: Alles auswählen
<h3 <!-- IF postrow.S_FIRST_ROW -->class="first"<!-- ENDIF -->><!-- IF postrow.POST_ICON_IMG --><img src="{T_ICONS_PATH}{postrow.POST_ICON_IMG}" width="{postrow.POST_ICON_IMG_WIDTH}" height="{postrow.POST_ICON_IMG_HEIGHT}" alt="" /> <!-- ENDIF --><a href="#p{postrow.POST_ID}">{postrow.POST_SUBJECT}</a></h3>
=>
- Code: Alles auswählen
<h3 <!-- IF postrow.S_FIRST_ROW -->class="first"<!-- ENDIF -->><!-- IF postrow.POST_ICON_IMG --><img src="{T_ICONS_PATH}{postrow.POST_ICON_IMG}" width="{postrow.POST_ICON_IMG_WIDTH}" height="{postrow.POST_ICON_IMG_HEIGHT}" alt="" /> <!-- ENDIF --><a href="{postrow.U_MINI_POST}">{postrow.POST_SUBJECT}</a></h3>
Wer Advanced_quoting_1.0.1 installiert hat, damit jeder zitierte Beitrag einen Link zum zitierten Beitrag hat, kann auch diesen Backlink kürzen. Quelle:
http://www.alexhh.de/phpbb-mods/advanced_quoting_1.0.1.zip
http://www.phpbb.com/community/viewtopic.php?f=70&t=589243
https://www.phpbb.de/community/viewtopic.php?p=1109970#p1109970
http://www.phpbb.com/community/viewtopic.php?p=10116765#p10116765
Leider gibt es einen kleinen Fehler. Der von Advanced-Quote erzeugte Link funktioniert nur zu Beiträgen auf der Seite, auf der das Zitat steht. Ansonsten führt der Link zum Anfang des Themas.
Öffne:
/includes/bbcode.php
Suche:
- Code: Alles auswählen
$post_link .= "<a href=\"./viewtopic.php?f=".$param['forum_id']."&t=".$param['topic_id']."#p".$param['post_id']."\">";
Ersetze mit:
- Code: Alles auswählen
$post_link .= "<a href=\"./viewtopic.php?f=".$param['forum_id']."&t=".$param['topic_id']."&p=".$param['post_id']."#p".$param['post_id']."\">";
Für kurze URLs aber stattdessen durch Folgendes ersetzen!
- Code: Alles auswählen
$post_link .= "<a href=\"./b".$param['post_id']."\">";
Damit in der URL auch die Angabe der Forums-ID enthalten ist, stattdessen durch Folgendes ersetzen!
- Code: Alles auswählen
$post_link .= "<a href=\"./f".$param['forum_id']."b".$param['post_id']."\">";
Links von Suchergebnissen
Damit bei Suchergebnissen, die man als Themen (bzw. Threads) anzeigen lässt, die Thread-URLs kurz erscheinen, ersetze in der Datei includes/functions_display.php folgende Zeile!
- Code: Alles auswählen
$pagination .= '<a href="' . $url . '&start=' . $j . '">' . $times . '</a>';
=>
- Code: Alles auswählen
$pagination .= '<a href="' . $url . '&s' . $j . '">' . $times . '</a>';
Ersetze in der Datei search.php folgende Zeile!
- Code: Alles auswählen
$view_topic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$u_forum_id&t=$result_topic_id" . (($u_hilit) ? "&hilit=$u_hilit" : ''));
=>
- Code: Alles auswählen
$view_topic_url = "{$phpbb_root_path}{$result_topic_id}" . (($u_hilit) ? "h$u_hilit" : '');
- Code: Alles auswählen
RewriteRule ^([0-9]+)h([^&]*)$ viewtopic.php?t=$1&hilit=$2 [L]
Damit diese kurzen URLs auch jeweils die Forums-ID enthalten, ersetze diese Zeile anstatt durch die vorige Zeile durch folgende!
- Code: Alles auswählen
$view_topic_url = "{$phpbb_root_path}f{$u_forum_id}t{$result_topic_id}" . (($u_hilit) ? "h$u_hilit" : '');
- Code: Alles auswählen
RewriteRule ^f([0-9]+)t([0-9]+)h([^&]*)$ viewtopic.php?f=$1&t=$2&hilit=$3 [L]
Damit bei Suchergebnissen, die man als Beiträge anzeigen lässt, die Beitrag-URLs kurz erscheinen, ersetze in der Datei search.php folgende Zeile!
- Code: Alles auswählen
'U_VIEW_POST' => (!empty($row['post_id'])) ? append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=" . $row['topic_id'] . '&p=' . $row['post_id'] . (($u_hilit) ? '&hilit=' . $u_hilit : '')) . '#p' . $row['post_id'] : '')
=>
- Code: Alles auswählen
'U_VIEW_POST' => (!empty($row['post_id'])) ? "{$phpbb_root_path}" . 'b' . $row['post_id'] . (($u_hilit) ? 'h' . $u_hilit : '') : '')
- Code: Alles auswählen
RewriteRule ^b([0-9]+)h([^&]*)$ viewtopic.php?p=$1&hilit=$2#p$1 [NE,L]
Damit diese kurzen URLs auch jeweils die Forums-ID enthalten, ersetze diese Zeile anstatt durch die vorige Zeile durch folgende!
- Code: Alles auswählen
'U_VIEW_POST' => (!empty($row['post_id'])) ? "{$phpbb_root_path}"."f{$forum_id}" . 'b' . $row['post_id'] . (($u_hilit) ? 'h' . $u_hilit : '') : '')
- Code: Alles auswählen
RewriteRule ^f([0-9]+)b([0-9]+)h([^&]*)$ viewtopic.php?f=$1&p=$2&hilit=$3#p$2 [NE,L]
Kurze URL zur Druckansicht
Kurze Thread-URL für Link zur Druckansicht. Ersetze in der Datei viewtopic.php jeweils folgende zwei Zeilen!
- Code: Alles auswählen
'U_PRINT_TOPIC' => ($auth->acl_get('f_print', $forum_id)) ? $viewtopic_url . '&view=print' : '',
=>
- Code: Alles auswählen
'U_PRINT_TOPIC' => ($auth->acl_get('f_print', $forum_id)) ? $viewtopic_url . '&d' : '',
- Code: Alles auswählen
$viewtopic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id&start=$start" . ((strlen($u_sort_param)) ? "&$u_sort_param" : '') . (($highlight_match) ? "&hilit=$highlight" : ''));
=>
- Code: Alles auswählen
$viewtopic_url = "{$phpbb_root_path}". "{$topic_id}s{$start}" . ((strlen($u_sort_param)) ? "&$u_sort_param" : '') . (($highlight_match) ? "h$highlight" : '');
- Code: Alles auswählen
RewriteRule ^([0-9]+)s([0-9]*)&d$ viewtopic.php?t=$1&start=$2&view=print [L]
Falls man ein Suchergebnis aufrief, ist in der URL auch eine Angabe über das zu suchende Wort:
- Code: Alles auswählen
RewriteRule ^([0-9]+)s([0-9]*)h([^&]*)&d$ viewtopic.php?t=$1&start=$2&hilit=$3&view=print [L]
Damit diese kurzen URLs auch jeweils die Forums-ID enthalten, ersetze diese Zeile anstatt durch die vorige Zeile durch folgende!
- Code: Alles auswählen
$viewtopic_url = "{$phpbb_root_path}". "f{$forum_id}t{$topic_id}s{$start}" . ((strlen($u_sort_param)) ? "&$u_sort_param" : '') . (($highlight_match) ? "h$highlight" : '');
- Code: Alles auswählen
RewriteRule ^f([0-9]+)t([0-9]+)s([0-9]*)&d$ $1viewtopic.php?f=$1&t=$2&start=$3&view=print [L]
Falls man ein Suchergebnis aufrief, ist in der URL auch eine Angabe über das zu suchende Wort:
- Code: Alles auswählen
RewriteRule ^f([0-9]+)t([0-9]+)s([0-9]*)h([^&]*)&d$ viewtopic.php?f=$1&t=$2&start=$3&hilit=$4&view=print [L]
Kurze URL für die Foren-Übersicht
Kurze URL für den Index-Link. In der Datei includes/functions.php folgende Zeile ersetzen!
- Code: Alles auswählen
'U_INDEX' => append_sid("{$phpbb_root_path}index.$phpEx"),
=>
- Code: Alles auswählen
'U_INDEX' => "{$phpbb_root_path}i",
Folgende Umwandlungsanweisung bewirkt, dass bei i oder index die Datei index.php aufgerufen wird, und somit die Foren-Übersicht.
- Code: Alles auswählen
RewriteRule ^i(ndex)?$ index.php [L]
Kurze URLs für Userprofile
Ersetze in der Datei includes/functions_content.php jeweils folgende Zeilen!
- Code: Alles auswählen
$_base_profile_url = append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u={USER_ID}');
=>
- Code: Alles auswählen
$_base_profile_url = "{$phpbb_root_path}u{USER_ID}";
- Code: Alles auswählen
$profile_url = ($custom_profile_url !== false) ? $custom_profile_url . '&u=' . (int) $user_id : str_replace('={USER_ID}', '=' . (int) $user_id, $_base_profile_url);
=>
- Code: Alles auswählen
$profile_url = ($custom_profile_url !== false) ? $custom_profile_url . '&u=' . (int) $user_id : str_replace('{USER_ID}', (int) $user_id, $_base_profile_url);
- Code: Alles auswählen
RewriteRule ^u([0-9]+)$ memberlist.php?mode=viewprofile&u=$1 [L]
Kurze URLs für private Mitteilungen
Link im Kurzprofil eines Beitrags um eine private Mitteilung zu senden. Ersetze in der Datei viewtopic.php folgende Zeile!
- Code: Alles auswählen
'U_PM' => ($poster_id != ANONYMOUS && $config['allow_privmsg'] && $auth->acl_get('u_sendpm') && ($user_cache[$poster_id]['allow_pm'] || $auth->acl_gets('a_', 'm_') || $auth->acl_getf_global('m_'))) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&mode=compose&action=quotepost&p=' . $row['post_id']) : '',
=>
- Code: Alles auswählen
'U_PM' => ($poster_id != ANONYMOUS && $config['allow_privmsg'] && $auth->acl_get('u_sendpm') && ($user_cache[$poster_id]['allow_pm'] || $auth->acl_gets('a_', 'm_') || $auth->acl_getf_global('m_'))) ? "{$phpbb_root_path}".'n'.$row['post_id'] : '',
- Code: Alles auswählen
RewriteRule ^n([0-9]+)$ ucp.php?i=pm&mode=compose&action=quotepost&p=$1 [L]
Link im Userprofil um eine private Mitteilung zu senden. Ersetze in der Datei memberlist.php folgende Zeile!
- Code: Alles auswählen
'U_PM' => ($config['allow_privmsg'] && $auth->acl_get('u_sendpm') && ($data['user_allow_pm'] || $auth->acl_gets('a_', 'm_') || $auth->acl_getf_global('m_'))) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&mode=compose&u=' . $user_id) : '',
=>
- Code: Alles auswählen
'U_PM' => ($config['allow_privmsg'] && $auth->acl_get('u_sendpm') && ($data['user_allow_pm'] || $auth->acl_gets('a_', 'm_') || $auth->acl_getf_global('m_'))) ? "{$phpbb_root_path}".'m'.$user_id : '',
- Code: Alles auswählen
RewriteRule ^m([0-9]+)$ ucp.php?i=pm&mode=compose&u=$1 [L]
Kurze URLs für E-Mails mit versteckter E-Mail-Adresse
Link im Kurzprofil eines Beitrags um eine E-Mail zu senden. Folgende Ersetzungen können natürlich nur dann kurze URLs erzeugen, wenn das Forum einen Link in der Form http:// d o m a i n . d e /memberlist.php?mode=email&u=27 ausgibt.
Dies ist dann der Fall, wenn im Admin-Bereich das Verstecken von E-Mails, das Versenden über das Board und natürlich auch das Senden von E-Mails über das Board aktiviert sind. Ersetze in der Datei viewtopic.php folgende Zeile!
- Code: Alles auswählen
$user_cache[$poster_id]['email'] = ($config['board_email_form'] && $config['email_enable']) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=email&u=$poster_id") : (($config['board_hide_emails'] && !$auth->acl_get('a_email')) ? '' : 'mailto:' . $row['user_email']);
=>
- Code: Alles auswählen
$user_cache[$poster_id]['email'] = ($config['board_email_form'] && $config['email_enable']) ? "{$phpbb_root_path}". "e$poster_id" : (($config['board_hide_emails'] && !$auth->acl_get('a_email')) ? '' : 'mailto:' . $row['user_email']);
Link im Userprofil um eine E-Mail zu senden. Ersetze in der Datei memberlist.php folgende Zeile!
- Code: Alles auswählen
$email = ($config['board_email_form'] && $config['email_enable']) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=email&u=' . $user_id) : (($config['board_hide_emails'] && !$auth->acl_get('a_user')) ? '' : 'mailto:' . $data['user_email']);
=>
- Code: Alles auswählen
$email = ($config['board_email_form'] && $config['email_enable']) ? "{$phpbb_root_path}".'e'.$user_id : (($config['board_hide_emails'] && !$auth->acl_get('a_user')) ? '' : 'mailto:' . $data['user_email']);
- Code: Alles auswählen
RewriteRule ^e([0-9]+)$ memberlist.php?mode=email&u=$1 [L]
Um Downloadlinks unten in Beiträgen zu kürzen, ersetze in der Datei includes/functions_content.php folgende Zeile!
- Code: Alles auswählen
$download_link = append_sid("{$phpbb_root_path}download/file.$phpEx", 'id=' . $attachment['attach_id']);
=>
- Code: Alles auswählen
$download_link = "{$phpbb_root_path}d{$attachment['attach_id']}";
- Code: Alles auswählen
RewriteRule ^d([0-9]+)$ download/file.php?id=$1 [L]
Weitere erforderliche Einträge in der Datei .htaccess
Einige der gemachten Änderungen bewirken auch an anderen Stellen des Forums kurze URLs, wo ich leider den Überblick verloren habe, welche der folgenden Umleitungsanweisungen jeweils wo erforderlich sind. Folgende RewriteRules auch mit in die Datei .htaccess eintragen!
- Code: Alles auswählen
RewriteRule ^b([0-9]+)h([^&]*)$ viewtopic.php?p=$1&hilit=$2#p$1 [NE,L]
RewriteRule ^f([0-9]+)b([0-9]+)h([^&]*)$ viewtopic.php?f=$1&p=$2&hilit=$3#p$2 [NE,L]
RewriteRule ^b([0-9]+)h([^&]*)&s([0-9]*)$ viewtopic.php?p=$1&hilit=$2&start=$3#$1 [NE,L]
RewriteRule ^f([0-9]+)b([0-9]+)h([^&]*)&s([0-9]*)$ viewtopic.php?f=$1&p=$2&hilit=$3&start=$4#$2 [NE,L]
RewriteRule ^([0-9]+)&?s([0-9]*)$ viewtopic.php?t=$1&start=$2 [NE,L]
RewriteRule ^([0-9]+)&?s([0-9]*)h(.*)$ viewtopic.php?t=$1&start=$2&hilit=$3 [NE,L]
RewriteRule ^f([0-9]+)t([0-9]+)&?s([0-9]*)$ viewtopic.php?f=$1&t=$2&start=$3 [NE,L]
RewriteRule ^f([0-9]+)t([0-9]+)&?s([0-9]*)h(.*)$ viewtopic.php?f=$1&t=$2&start=$3&hilit=$5#t [NE,L]
Teils erforderliche zusätzliche Einträge in der Datei .htaccess
Folgende zwei RewriteRules sind gegebenenfalls nicht erforderlich. Damit auch URLs der Form http:// d o m a i n . d e /p12 und http:// d o m a i n . d e /f17p12 aufgerufen werden können, auch noch folgende zwei RewriteRules eintragen!
- Code: Alles auswählen
RewriteRule ^f([0-9]+)p([0-9]+)$ viewtopic.php?f=$1&p=$2 [L]
RewriteRule ^p([0-9]+)$ viewtopic.php?p=$1 [L]