Frage

Ich versuche, ein Problem anzugehen, das scheinbar nicht in meiner Hand liegt, aber hoffentlich mit ein wenig .htaccess-Magie behoben werden kann.

Hintergrund des Problems

Ich habe eine Implementierung von MediaWiki, die derzeit eine .htaccess-Datei verwendet, um die URL zu verschönern.In der Standard-MediaWiki-Konfiguration ohne mod_rewrite kann auf jeden Artikel im Wiki normalerweise über Folgendes zugegriffen werden:

www.mywebsite.org/index.php?title=George_Clooney_(Schauspieler)

Mit der .htaccess-Datei (Code unten) können wir dies bereinigen, sodass auf dieselbe Seite zugegriffen werden kann:

www.mywebsite.org/George_Clooney_(Schauspieler)

Das funktioniert alles wie es soll.Intern gibt es hier kein Problem.

Zusammenfassung des Problems

Das Problem besteht darin, dass ein erheblicher Teil des Datenverkehrs meines Wikis von vBulletin stammt, das meiner Meinung nach einen Fehler bei der automatischen Analyse von URLs in Mitgliederbeiträgen aufweist.Wenn sie den obigen Link hinzufügen, analysiert vBulletin die URL in einen BB-Code-Link, lässt aber die abschließende Klammer weg.Tatsächlich sieht ihr endgültiger BB-Code im Allgemeinen so aus:

[url]http://www.mywebsite.org/George_Clooney_(actor[/url])

Das ist bedauerlich, weil die Mitglieder es normalerweise nicht mitbekommen und sie dann über den Link auf eine Seite weitergeleitet werden, die nicht existiert unter:

www.mywebsite.org/George_Clooney_(Schauspieler

Meine Frage

Ist es hoffentlich durch eine Umschreiberegel möglich, die schließende Klammer hinzuzufügen, wenn eine nicht geschlossene öffnende Klammer erkannt wird?

Zur Erleichterung folgt unser Wiki einem ziemlich strengen Benennungsformat, und ich kann mir keine Situation vorstellen, in der wir einen Artikel haben würden, der eine öffnende Klammer ohne eine schließende Klammer hat.In allen Fällen stehen die Wörter in Klammern am Ende des Artikelnamens.Unsere Artikelbenennungskonvention lautet immer entweder:

Article_Name oder Article_Name_(type)

Wenn wir also einen fehlerhaften Link erhalten, der versucht, „www.mywebsite.org/George_Clooney_(actor)“ zu besuchen, möchte ich ihn automatisch zu „www.mywebsite.org/George_Clooney_(actor)“ umleiten.

Andere mögliche Wege, die ich in Betracht gezogen habe, sind die Codierung eines Abschnitts mit Artikelvorschlägen auf der 404-Seite.Ich habe das Gefühl, dass das etwas aufwändiger sein wird, aber es wird meine Lösung sein, wenn dieser htaccess-Plan nicht funktioniert.

Folgendes habe ich derzeit für meine .htaccess-Datei:

RewriteEngine On
Options +FollowSymLinks

# Require Subdomain
RewriteCond %{HTTP_HOST} ^mywebsite.org [NC]
RewriteRule ^(.*)$ http://www.mywebsite.org/$1 [L,R=301]

# Pretty URL
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/index.php [PT,L,QSA]

Jede Hilfe wäre sehr dankbar.htaccess und die Kombination des richtigen regulären Ausdrucks sind für mich noch ziemlich neu und magisch.

War es hilfreich?

Lösung

Sie können diese Regel als Ihre verwenden allererste Regel (knapp unter RewriteEngine On Linie):

RewriteRule ^(.*?\(.*?[^)])$ /$1) [R=301,L,NE]

Dies setzt voraus, dass in der URL nur eine Klammer fehlt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top