Necesidad de hacer una jugada RewriteRule muy bien con otro, vergonzosamente débil comprensión de los principios de legitimación mod_rewrite en el camino

StackOverflow https://stackoverflow.com/questions/3575797

Pregunta

Tengo el siguiente sistema:

Windows Server '03
IIS 6 (Shoot Me)
PHP 5.2.14
Wordpress 3.0.1
WPML 1.8.1.2

He añadido Wordpress a un sitio de alto tráfico existente, en un directorio que llamaremos

http: // thehost / wordpress /

Para mod_rewrite características similares, estoy usando ISAPI_Rewrite de Helicon 3.1.0.76. Lo estoy usando para permitir "bastante" enlaces permanentes en la instalación de WordPress. La única regla es la siguiente:

RewriteRule ^ / wordpress / (index.php ?!) (WP ?!) ([^.] *) $ /Wordpress/index.php/$1 [I, L]

Tengo que añadir otra regla, sin embargo, y ninguno de mis dos estrategias de pensarlo bien y golpear a través de ha dado sus frutos.

Mi sitio es un ser completamente bilingüe. No hay páginas que no están bajo una de las dos siguientes subdirectorios:

http: // thehost / es / para Inglés, y

http:. // thehost / sp / español

Esta es una convención Mi objetivo es mantener, incluso para la instalación de WordPress. Actualmente tengo una versión algo hackeado de WPML (Wordpress multilingüe plug-in) que funciona, y funciona de tal manera que todas las páginas y mensajes, independientemente de la lengua-incluye ni la / es / o el / sp / en la URL. Esto me ha llevado a creer que soy dolorosamente cerca, tal vez sólo un RewriteRule distancia! -Para hacer mis URL de Wordpress se ajustan a la misma convención URL como el resto de mi sitio. Mi problema, sin embargo, como se ha descrito, es que yo no puedo conseguir que funcione.

Por lo tanto, si tengo esto en alguna URL en mi instalación de WordPress:

http: // thehost / wordpress / es / 2010/08 / omg-este post-ser-en-Inglés /

¿cómo puedo transformarlo a

http: // thehost / es / wordpress / 2010/08 / omg-este post-ser-en-Inglés /

mientras no perder los enlaces permanentes de Wordpress? Me las he arreglado para intercambiar el / en / a su ubicación correcta ( ^ / es / wordpress /(.*) / wordpress / es / $ 1 ), pero no puedo llegar a las dos reglas jugar muy bien juntos. Ese es mi problema. Bueno, eso y algunos otros no es apropiado para stackoverflow.com.

Gracias por su tiempo.

¿Fue útil?

Solución

Trate de encadenamiento de las reglas con la "C" de la bandera. Ejemplo:

RewriteRule ^/en/wordpress/(.*) /wordpress/en/$1 [C]
RewriteRule ^/wordpress/(?!index.php)(?!wp)([^.]*)$ /wordpress/index.php/$1 [I,L]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top