Necessità di fare un gioco RewriteRule bene con un altro, imbarazzante comprensione deboli dei principi di standing mod_rewrite nel modo
-
01-10-2019 - |
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.
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]