web-dev-qa-db-ja.com

マルチサイトでadd_rewrite_ruleが機能しない

私は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です。

1
Xaver

問題はマルチサイト用の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]
1
Xaver