Modrewrite-Problem+Lösung bei Links mit Leerzeichen oder Bindestrichen

Begonnen von CCJ39, 10 September 2010, 20:47:06

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

CCJ39

Hallo,

seit ein paar Wochen arbeiten wir daran eine erweiterte Version des modrewrites für unsere Seite (MegaDev) zu erstellen. Dabei ist das Grundgerüst von modrewrite im Pragma schon mal ein sehr guter Anfang. Leider erkennt dieses jedoch ein paar entscheidene Arten von Links nicht!

1. Wenn im Link die eigene Domain vorkommt, wird der Link trotzdem nicht umgeschrieben (selten, aber kann vorkommen).
2. Sollte der Link ein Leerzeichen oder Minus beinhalten, wird er ebenfalls nicht erkannt.

Für den ersten Fall habe ich erstmal noch keine Idee, aber für den zweiten funktioniert folgende Modifikation in unserem Test bislang sehr gut. Wäre schön, wenn einer der Pragma-Entwicklung sich das mal anschauen könnte und Feedback dazu gibt, ob das aus einem bestimmten Grund bislang nicht drin war oder es schlicht übersehen wurde.

Datei: includes/mx_modrewrite.php
um Zeile 95 herum gibt es
$pattern = '!(<a(?:[^>]+)href=["\']|<link>)(?:' . preg_quote(PMX_HOME_URL . '/', '!') . ')?modules\.php\?((?:[[:alnum:]\=&_.;]|&amp;)+)(#[^"\']+)?(["\']|</link>)!i';


wenn man diese Zeile um lediglich 2 Zeichen ergänzt zu

$pattern = '!(<a(?:[^>]+)href=["\']|<link>)(?:' . preg_quote(PMX_HOME_URL . '/', '!') . ')?modules\.php\?((?:[[:alnum:]+-\=&_.;]|&amp;)+)(#[^"\']+)?(["\']|</link>)!i';

werden auch diese Links erkannt, was gerade bei Benutzerprofilen extrem häufig vorkommt