0

私のクエリは、キャプチャする正規表現を作成することに関するものです:

  1. 0 個以上のサブカテゴリ
  2. 0 または 1 ページング インデックス
  3. 0 または 1 個の製品 ID

これは、すべてを 1 つのパラメーターとして読み取り、このパラメーターを php に渡すことで簡単に実行できますが、大量のコードとパフォーマンスの低下を意味しますが、htaccess+regex は 1 行のコードでこれを実行します。

例:

catalog/
0 ページから始まるすべての製品を表示します。

catalog/dolls/barbie/malibu/
0 ページから始まるすべてのマリブ バービー人形を表示します

。catalog/dolls/gijoe/p_5/id_99
製品 id_99 を表示します。ただし、ページとカテゴリはナビゲーション リンクとして表示されるように維持されます。

カタログ/人形/p_3
カタログ/人形/バービー/id_456

RewriteRule ^catalog/(([^/:*?"<>|\r\n]*/)*)(id-([0-9]{1,4}+))*$ catalog.php?category=$1&id=$3

このように、catalog/doll/barbie/id-1234/ のような URL で試してみました。ただし、$1 をキャプチャすると doll/barbie/id-1234/ が生成され、id-1234/id-345/id-145/ のようなものは「有効」で 145 を返すため、重複したページで seo の配置が損なわれます。この正規表現はページングを処理しません... 私は RegexBuddy3 を使用しています (非常に便利で、購入する必要があります) が、非常に長い式を扱う場合、apache+httacess は 100% 同じように動作しません。

4

1 に答える 1

0

最も簡単な方法は、URL でカテゴリと製品の両方の ID を渡すことです。URL を次のようにすることができます

/malibu-33/ - カテゴリ ID 33 のカタログを見ています
。catalog/dolls/barbie/malibu-33/barbie-450 - カテゴリ ID 33 と製品 450 のカタログを見ています。

これはすべて、htaccess の 3 つのルールで行う必要があります。
catalogue/(.*)-number/(.*)-numberのようなリンクを受け取った場合は、カテゴリ内の製品を見ています。
catalogue/(.*)-number の場合、カテゴリ
catalogue/ を見ています。カタログ全体を見ています。

すべてをキャプチャする必要はありません。数字だけをキャプチャする必要があります。数字だけで、現在地がわかります。

于 2012-12-20T04:29:41.013 に答える