0

2 つの RewriteRules を含む htaccess ファイルでは、それぞれが単独で動作しますが、両方が同時に動作するわけではありません

RewriteRule  ^([1-9]+)/.*/(.*) /sortir/index.php?com=page1&t=$1&l=$2 [QSA]

RewriteRule  ^([1-9]+)/([1-9]+)/.*  /sortir/index.php?com=page2&t=$1&v=$2 [QSA]

最初に削除すると、2番目に機能します。
2番目を削除すると、最初に機能します。

最初に呼び出されるリンクは次のようになります。

http://example.com/33/xxxx/cityつまり、$1 は 33、$2 は都市です。

2 番目に呼び出されるリンクは次のようになります。

http://example.com/33/432/xxxx/city/yyyyyつまり、$1 は 33、$2 は 432 です。

4

2 に答える 2

1

anubhava が指摘しているように、詳細は参考になりますが、現在のルールで指摘できる問題が少なくともいくつかあります。

まず、ルールの順序を逆にします。2 番目の規則は、数値の 2 つのセクションと追加のテキストのセクションで始まるため、あまり一般的ではありません。最初に一致させてから、より一般的なルールに一致させます。

次に、各ルールを L フラグで終了します。それ以外の場合、処理は最初のルールが終了した後に 2 番目のルールに進みます。

3 番目に、スラッシュと一致しないように一致を更新します。これにより、パターンは、任意の数のディレクトリ レベルに一致するのではなく、探している正確なディレクトリ構造に一致するようになります。

これらのことを念頭に置いて、プレイするためのいくつかの更新されたルールを次に示します。

最初のルール一致http://example.com/33/432/xxxx/city/yyyy

2 番目のルールの一致http://example.com/33/xxxx/city

RewriteRule  ^([1-9]+)/([1-9]+)/[^/]+/[^/]+/.*  /sortir/index.php?com=page2&t=$1&v=$2 [QSA, L]
RewriteRule  ^([1-9]+)/[^/]*/([^/]*)$ /sortir/index.php?com=page1&t=$1&l=$2 [QSA, L]

これが必要な正確なルール セットでない場合は、少なくとも近づく必要があります。

于 2013-02-14T01:47:55.420 に答える
1

この正規表現以降、両方の条件が重複しています。

^([1-9]+)/.*/(.*)

もマッチします

^([1-9]+)/.*/(.*)

したがって、発火するのは 1 つだけです。要件を明確に説明してください。そうすれば、RewriteRule を明確に記述することができます。

于 2013-02-13T17:12:25.800 に答える