web-dev-qa-db-fra.com

add_rewrite_rule sur multisite ne fonctionne pas

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.

1
Xaver

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]
1
Xaver