Je définis une règle de réécriture sur un hook init comme:
add_rewrite_rule( 'foobar/(abc|def|ghi)/(.+)(/(\d.+))', 'index.php?my_action=$matches[1]&my_name=$matches[2]&my_version=$matches[4]', 'top');
Ceci fonctionne avec l'URL suivante sur une seule installation WP:
http://example.com/foobar/def/whatever/1.2
Cependant, ce n'est pas le cas sur une installation multisite.
Il semble qu'il y a un problème avec la réécriture des règles sur plusieurs sites # 19896 qui décrit un problème similaire sur "non WP règles"
Je n'ai aucune idée de ce que je devrais ajouter au fichier .htaccess
et je préfère une solution "appropriée".
EDIT:
J'ai oublié quelque chose d'important:
J'utilise le mappage de domaine WordPress MU pour utiliser différents domaines. Lorsque le réseau est sur network.example.com
, le site que j'utilise add_rewrite_rule
est sub.example.com.
Il semble que le problème ne soit pas avec add_rewrite_rule
mais plutôt avec le fichier .htaccess
pour le site multiple.
Une des adresses de test était
http://example.com/foobar/def/whatever.php
Voici une partie de htaccess qui provoque le résultat (Ligne 2)
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
Si je commente cette ligne, elle fonctionnera comme prévu, mais cela pourrait casser autre chose. Vous devez donc ajouter votre propre règle ci-dessus au dernier bloc:
RewriteRule ^([_0-9a-zA-Z-]+/)?foobar/(abc|def|ghi)/(.+)(/(\d.+))$ index.php?my_action=$2&my_name=$3&my_version=$5 [R=301,L]