Besoin de faire un jeu de RewriteRule bien avec une autre, la compréhension honteusement faible des principes de statut mod_rewrite de la manière

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

Question

Je le système suivant:

Windows Server '03
IIS 6 (shoot me)
PHP 5.2.14
Wordpress 3.0.1
WPML 1.8.1.2

J'ai ajouté Wordpress à un site haut de trafic existant, dans un répertoire que nous appellerons

http: // thehost / wordpress /

Pour mod_rewrite comme caractéristiques, j'utilise la ISAPI_Rewrite Helikoniades 3.1.0.76. Je l'utilise pour activer « joli » permaliens dans l'installation Wordpress. La seule règle est la suivante:

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

Je dois ajouter une autre règle, cependant, et aucune de mes deux stratégies de penser à travers et cognant à travers a porté ses fruits.

Mon site est un entièrement bilingue. Il n'y a pas de pages qui ne sont pas sous l'une des deux sous-répertoires suivants:

http: // thehost / fr / pour l'anglais, et

http: //. Thehost / sp / pour l'espagnol

Ceci est une convention que je vise à maintenir, même pour l'installation Wordpress. J'ai actuellement une version un peu piraté de WPML (Wordpress plugin multilingue) d'exploitation, et il fonctionne de telle sorte que toutes les pages et postes quelle que soit la langue comprennent soit le / en / ou / sp / dans l'URL. Cela m'a conduit à croire que je suis peut-être poignante près seulement un RewriteRule loin! -Pour faire mes URL Wordpress sont conformes à la même convention d'URL que le reste de mon site. Mon problème cependant, comme décrit, est que je ne peux pas tout à fait le faire au travail.

Alors, si j'ai quelque part URL dans mon installation Wordpress:

http: // thehost / wordpress / fr / 2010/08 / omg-ce post-est en anglais /

comment puis-je transformer en

http: // thehost / fr / wordpress / 2010/08 / omg-ce post-est en anglais /

en ne pas perdre les permaliens Wordpress? J'ai réussi à échanger la / en / à son emplacement correct ( ^ / fr / /(.* wordpress) / wordpress / fr / $ 1 ), mais je ne peux pas obtenir les deux règles de jouer bien ensemble. C'est mon problème. Eh bien, et quelques autres ne conviennent pas à stackoverflow.com.

Merci pour votre temps.

Était-ce utile?

La solution

Essayez enchaînant les règles avec le drapeau « C ». Exemple:

RewriteRule ^/en/wordpress/(.*) /wordpress/en/$1 [C]
RewriteRule ^/wordpress/(?!index.php)(?!wp)([^.]*)$ /wordpress/index.php/$1 [I,L]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top