Kurze URLs (Short URL) für das phpBB3. Dies ist eine Anleitung, um die wichtigsten internen Links mit kurzen URLs auszustatten.

Beitrag 1391 von UFO-Peter » 01.12.2010, 11:21

Kurze URLs (Short URL) für das phpBB3. Dies ist eine Anleitung, um die wichtigsten internen Links mit kurzen URLs auszustatten.

Neu! Ab jetzt auch kurze URLs für die einzelnen Seiten der Forenübersicht; auch damit für alle Seiten von Forenübersichten kurze kanonische URLs möglich sind.

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:
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


Code: Alles auswählen
'U_VIEW_FORUM'         => append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=$forum_id&amp;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) ? '?' : '&amp;';

=>

Code: Alles auswählen
$url_delim = (strpos($base_url, '?') === false) ? '' : '&amp;';


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)) ? "&amp;$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)) ? "&amp;$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) . '&amp;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) ? '&amp;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']."&amp;t=".$param['topic_id']."#p".$param['post_id']."\">";

Ersetze mit:
Code: Alles auswählen
$post_link .= "<a href=\"./viewtopic.php?f=".$param['forum_id']."&amp;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 . '&amp;start=' . $j . '">' . $times . '</a>';

=>

Code: Alles auswählen
$pagination .= '<a href="' . $url . '&amp;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&amp;t=$result_topic_id" . (($u_hilit) ? "&amp;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&amp;t=" . $row['topic_id'] . '&amp;p=' . $row['post_id'] . (($u_hilit) ? '&amp;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 . '&amp;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&amp;t=$topic_id&amp;start=$start" . ((strlen($u_sort_param)) ? "&amp;$u_sort_param" : '') . (($highlight_match) ? "&amp;hilit=$highlight" : ''));

=>

Code: Alles auswählen
$viewtopic_url = "{$phpbb_root_path}". "{$topic_id}s{$start}" . ((strlen($u_sort_param)) ? "&amp;$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)) ? "&amp;$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&amp;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 . '&amp;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 . '&amp;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&amp;mode=compose&amp;action=quotepost&amp;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&amp;mode=compose&amp;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&amp;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&amp;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]
Liebe Leser! Wenn Sie die Schildbürgerstreiche der Politik(er) schon lange satt haben, unter­stützen Sie bitte dieses Forum, indem Sie es auf anderen Seiten verlinken, oder nur aufs 'Welt­rettungs­forum' aufmerk­sam machen!
 
Falls Sie aber meinen, dass ein Staat gemäß Grund­gesetz schon dann demo­kratisch ist, wenn das Wahlvolk alle vier Jahre wählen gehen darf, wer die Dikta­toren sein sollen. Post­fakt­ische Lügenpresse, halt’ die Fresse!
 
Oder es in Ordnung wäre, dass im Gegensatz zur ehe­ma­ligen DDR, Menschen so wenig ver­dienen, dass es nicht zum Leben reicht und vieler­orts unver­schuld­ete Ob­dach­losig­keit herrscht; während dem­gegen­über einige wenige Multi­million­äre in uner­mess­lichem Reich­tum schwelgen.
 
Oder, wenn Sie meinen, dass AfD und PEGIDA rechts­radikal wären, weil beide gegen das Gut­menschen­tum sind, das alle Flücht­linge inte­grieren will ein­schließ­lich Deutsch­lern­pflicht; obwohl sie doch in einem Lager mit Wohn­con­tainern viel besser auf­ge­hoben wären.
 
Oder, wenn Sie abstreiten, dass auch Deutschland den Flüchtlingsstrom mit verursachte, indem die deutsche Regierung verantwortlich dafür war, dass Deutschland 2014 nur noch die Hälfte an den UNHCR zahlte, wodurch eine Hungersnot in den Flüchtlingslagern ausgelöst wurde.
 
Oder, wenn Sie die BRD für einen Rechts­staat halten, obwohl Richter und An­wälte durch per­ma­nente Rechts­beugung vor­ein­ge­nom­men um den Er­halt ihrer Arbeits­plätze be­müht sind; und mich deswegen Richter Rüdiger Richel rechtskräftig dazu verurteilte, Kinder zu ermorden. Wir brauchen eine un­vor­ein­ge­nom­me­ne Justiz anstatt eine unab­hängige Justiz. Genauso brauchen wir un­ab­häng­ige Lehrer anstatt ein (staat­lich ge­steu­er­tes) Bildungs­system.
 
Oder, wenn Sie glauben, dass die Kirche mit ihrer geistes­kranken Wahn­vor­stellung recht hat; dass einst Gott seinen (angeb­lich) einzigen Sohn sandte, damit dieser als Opfer­lamm brutal er­mordet wird zwecks Sünden­ver­gebung. Juden unschuldig an der Kreuzigung Jesu.
 
Oder, wenn Sie allen Ernstes meinen, dass soge­nannte "Lesben" und "Schwule" sexuell so orien­tiert sind, dass unbe­dingt die Ge­nital­ien nicht zu­ein­an­der passen dürfen; oder, dass der Terror­an­schlag in Paris nichts mit dem Islam zu tun hat.
 
Oder die sexuelle Neigung zu 'vor­puber­tärem' Kind ab­artig sei, obwohl manche Mädchen fast schon im Klein­kind­alter ge­schlechts­reif sind und trotzdem zur Prüderie gezwungen werden; Sie aber demgegenüber Zwangs­be­berg­steigung, Zwangs­artistik und Zwangs­leistungs­be­sportung von Kindern OK finden; brauchen Sie dieses Forum natürlich nicht unter­stützen.