私はinitフックに書き換え規則を次のように定義します。
add_rewrite_rule( 'foobar/(abc|def|ghi)/(.+)(/(\d.+))', 'index.php?my_action=$matches[1]&my_name=$matches[2]&my_version=$matches[4]', 'top');
これは単一のWPインストールで以下のURLで動作します。
http://example.com/foobar/def/whatever/1.2
しかし、それはマルチサイトインストールではありません。
それは マルチサイト上の書き換え規則には問題がある ようであり、 "non WP規則に同様の問題が記述されているチケットがある #19896 「
.htaccess
ファイルに何を追加すればよいのか私にはわかりませんが、「適切な」解決策をお勧めします。
編集:
重要なことを忘れてしまいました。
私は WordPress MUドメインマッピング を使用して異なるドメインを使用しています。ネットワークがnetwork.example.com
上にある間は、add_rewrite_rule
を使用しているサイトはsub.example.comです。
問題はマルチサイト用のadd_rewrite_rule
ファイルではなく.htaccess
に関するものではないようです。
テストアドレスの1つは
http://example.com/foobar/def/whatever.php
これは、結果となるhtaccessの一部です(2行目)
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
この行をコメントアウトすると期待通りに動作しますが、他のものを壊す可能性があります。それで、あなたはあなた自身の規則を追加しなければなりません上記最新のブロック:
RewriteRule ^([_0-9a-zA-Z-]+/)?foobar/(abc|def|ghi)/(.+)(/(\d.+))$ index.php?my_action=$2&my_name=$3&my_version=$5 [R=301,L]