Question

Je suis en train de résoudre un problème qui apparemment est hors de mes mains, mais j'espère que peut être fixé avec un peu de .htaccess de la magie.

Le fond du Problème

J'ai une mise en œuvre de MediaWiki qui utilise actuellement une .fichier htaccess pour embellir l'URL.Dans le stock de MediaWiki configuration sans le mod_rewrite, chaque article dans le wiki est normalement accessible en visitant:

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

Avec la .htaccess (code ci-dessous), nous sommes en mesure de nettoyer, de sorte que la même page peut être consulté en allant à:

www.mywebsite.org/George_Clooney_(acteur)

C'est tout ce travail comme il se doit.En interne, il n'y a pas de problème ici.

Résumé du Problème

Le problème, c'est une partie importante de mon wiki du trafic vient de vBulletin, j'ai découvert un bug avec la façon dont il analyse automatiquement les Url dans les messages des membres.Quand ils ajouter le lien ci-dessus, vBulletin analyse l'url dans un Code BB lien, mais laisse de côté la parenthèse de fin.En fait, leur BB Code ressemble généralement à ceci:

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

Ce qui est regrettable, parce que les membres n'ont pas l'habitude de l'attraper, puis sur le lien envoie vers une page qui n'existe pas:

www.mywebsite.org/George_Clooney_(acteur

Ma Question

Est-il possible, espérons-le, par le biais d'une règle de réécriture, pour ajouter la parenthèse fermante si un unclosed parenthèse ouvrante est-il détecté?

Pour les aider, notre wiki suit un assez strictes format de nom, et je ne prévois aucun situation où nous aurions un article qui a une parenthèse ouvrante sans une parenthèse fermante.Dans tous les cas, les mots entre parenthèses sont situés à la fin du nom de l'article.Notre article de la convention de nommage est toujours soit:

Nom_article ou Article_Name_(type)

Donc, si nous avons un mauvais lien qui tente de visite "www.mywebsite.org/George_Clooney_(l'acteur", je voudrais rediriger automatiquement à "www.mywebsite.org/George_Clooney_(acteur)".

D'autres voies possibles que j'ai vu est le codage d'un article de la suggestion de la section de la page 404.Je crois que ce sera un peu plus de travail, mais sera ma solution si ce htaccess plan ne fonctionne pas.

Voici ce que j'ai actuellement pour mon .fichier htaccess:

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]

Toute aide serait grandement appréciée.htaccess, et la combinaison de la bonne regex, est encore assez nouveau et magique pour moi.

Était-ce utile?

La solution

Vous pouvez utiliser cette règle en tant que votre très première règle (juste en dessous RewriteEngine On ligne):

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

C'est en supposant qu'il existe une seule parenthèse manquante dans l'URL.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top