web-dev-qa-db-ja.com

複数の分類法クエリのURL書き換えルール

私は複数の分類法を問い合わせるリンクのためにいくつかのきれいなURLを作成しようとしています。私は "分類法ドリルダウン"プラグインを使用していますが、主な使用法はコアに統合されていますが、テンプレート作成に役立つ機能がまだあります:)

複数の分類法(クエリ)を照会するURLの例は次のようになります。domain.com/?tax1=foo&tax2=bar

私の目標は - domain.com/tax1/foo/tax2/barのようなリンクを持つことです - 上の例に翻訳する

tax1/2 =分類名

foo/bar =必須用語

WP Rewritesの例 しかし、私はこれらのパターンと以下のようなもので悩んでいると思います。

$newrules['tax1/(.*)/tax2/(.*)/'] = 'index.php?tax1=$matches[1]&tax2=$matches[2]';

動作しないようです(これはWordpressの例に基づく関数全体の一部に過ぎません)。

何か案は? :)

3
netfreak

(.*)はすべてにマッチするので、余分な文字を「使い果たし」ます(「欲張り」です)。 URLが/tax1/foo/tax2/bar/の場合、最初の(.*)foo/tax2/bar/になるため、2番目の一致には何も残りません。

(.*)の代わりに、 "欲張りでない"バージョンの(.+?)を使うことができます。これは可能な限り一致しますが、それでも残りの点に注意してください。さらに厳密なバージョン([^/]+)を使用することもできます。これは次の/までのすべてに一致します - ただし、これはネストしたカテゴリでは機能しないため、/category/fruit/banana/tag/flies/fruit/bananafliesに分割されません。

もしあなたが書き換え規則で遊ぶつもりなら私はあなたが私の Rewriteアナライザプラグインをインストールすることを勧めます 。それはあなたが現在の書き換え規則を見て、どの規則がマッチするかを見るためにURLで遊ぶことを可能にします。

5
Jan Fabry