Pregunta

Yo estoy tratando de solucionar un problema que aparentemente está fuera de mis manos, pero espero que pueda solucionarse con un poco .htaccess magia.

El fondo del Problema

Tengo una aplicación de MediaWiki que actualmente utiliza .archivo htaccess para embellecer la URL.En la bolsa de MediaWiki configuración sin el mod_rewrite, cada artículo en la wiki es normalmente acceso a:

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

Con el .htaccess (código de abajo), somos capaces de limpiar esto, de modo que la misma página se puede acceder a:

www.mywebsite.org/George_Clooney_(actor)

Esto es todo funciona como debería.Internamente, no hay ningún problema aquí.

Resumen del Problema

El problema es que una parte importante de mi wiki del tráfico proviene de vBulletin, que he encontrado tiene un bug con la forma en que analiza automáticamente las direcciones Url en los mensajes.Al añadir el enlace de arriba, vBulletin analiza la url en un Código BB link, pero deja fuera el paréntesis final.De hecho, su último Código BB en general se parece a esto:

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

Lo cual es lamentable, porque los miembros no suelen tomar, y luego el enlace envía a una página que no existe en:

www.mywebsite.org/George_Clooney_(actor

Mi Pregunta

Es posible, esperemos que a través de una regla de reescritura, para agregar el paréntesis de cierre si no cerradas paréntesis de apertura se detecta?

Para ayudar, nuestra wiki de la siguiente manera bastante estricta formato de nomenclatura, y yo no prever cualquier situación en la que nos gustaría tener un artículo que tiene un paréntesis de apertura, sin un paréntesis de cierre.En todos los casos las palabras en paréntesis se encuentran al final del nombre del artículo.Nuestro artículo de la convención de nomenclatura siempre es:

Article_Name o Article_Name_(tipo)

Por lo tanto, si tenemos un enlace mal que intenta visitar "www.mywebsite.org/George_Clooney_(actor", me gustaría redirigir automáticamente a "www.mywebsite.org/George_Clooney_(actor)".

Otras posibles rutas que he considerado es la codificación de un artículo sección de sugerencias de la página de error 404.Siento que este va a ser un poco más de trabajo, pero va a ser mi solución en si esta htaccess plan no funciona.

Aquí es lo que tengo actualmente para mi .archivo 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]

Cualquier ayuda sería muy apreciada.htaccess, y la combinación de la derecha regex, es todavía bastante nuevo y mágico para mí.

¿Fue útil?

Solución

Puede usar esta regla como su Muy primera regla (justo debajo de la línea RewriteEngine On):

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

Esto está asumiendo que solo hay un paréntesis faltante en la URL.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top