Necessità di fare un gioco RewriteRule bene con un altro, imbarazzante comprensione deboli dei principi di standing mod_rewrite nel modo

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

Domanda

ho il seguente sistema:

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

Ho aggiunto Wordpress per un sito ad alto traffico esistente, in una directory che chiameremo

http: // thehost / wordpress /

Per mod_rewrite-come le caratteristiche, sto usando ISAPI_Rewrite di Helicon 3.1.0.76. Sto usando per consentire "abbastanza" permalinks nella installazione di WordPress. La sola regola è questa:

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

ho bisogno di aggiungere un'altra regola, tuttavia, e nessuno dei miei doppi strategie di pensare attraverso e colpire attraverso ha dato i suoi frutti.

Il mio sito è un completamente bilingue. Non ci sono pagine che non sono sotto una delle due seguenti sottodirectory:

http: // thehost / it / per l'inglese, e

http: //. Thehost / sp / per lo spagnolo

Questa è una convenzione Io lo scopo di mantenere, anche per l'installazione di WordPress. Al momento ho una versione un po hacked di WPML (Wordpress Plugin multilingue) che operano, e funziona in modo tale che tutte le pagine e post-indipendentemente dalla lingua, includono sia la / it / o del / sp / nell'URL. Questo mi ha portato a credere Sono dolorosamente vicino, forse solo un RewriteRule via! -Per fare i miei URL Wordpress sono conformi alla stessa convenzione URL, il resto del mio sito. Il mio problema, però, come descritto, è che io non riesco a farlo funzionare.

Quindi, se ho questo da qualche parte nel mio URL Wordpress installazione:

http: // thehost / wordpress / it / 2010/08 / omg-questo-post-is-a-inglese /

come posso trasformarlo in

http: // thehost / it / wordpress / 2010/08 / omg-questo-post-is-a-inglese /

, mentre non perdere permalink di Wordpress? Sono riuscito a scambiare la / it / alla sua posizione corretta ( ^ / it / wordpress /(.*) / wordpress / it / $ 1 ), ma non riesco a ottenere i due regole per giocare bene insieme. Questo è il mio problema. Beh, questo e pochi altri non è appropriato per stackoverflow.com.

Grazie per il vostro tempo.

È stato utile?

Soluzione

Prova concatenamento delle regole con la "C" Flag. Esempio:

RewriteRule ^/en/wordpress/(.*) /wordpress/en/$1 [C]
RewriteRule ^/wordpress/(?!index.php)(?!wp)([^.]*)$ /wordpress/index.php/$1 [I,L]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top