1

.htaccess に小さな問題があります。私はグーグルで検索していくつかのことを試しましたが、何の結果も得られなかったので、 SOFに助けを求めなければなりませんでした。

次の htaccess ルールを検討してください。

# CATEGORY LISTING
ReWriteRule ^listing/category/(.*)/(.*)/(.*)/(.*) ?module=listing&type=category&get=$1&c_id=$2&c_name=$3&page=$4 [L]

ReWriteRule ^listing/category/(.*)/(.*)/(.*) ?module=listing&type=category&get=$1&c_id=$2&c_name=$3 [L]

# CATEGORY FILTER
ReWriteRule ^listing/category/(.*)/(.*)/(.*) ?module=listing&type=category&orderType=$1&order=$2&page=$3 [L]

ReWriteRule ^listing/category(.*)/(.*) ?module=listing&type=category&orderType=$1&order=$2 [L]

ReWriteRule ^listing/category/(.*) ?module=listing&type=category&page=$1 [L]

ReWriteRule ^listing/category ?module=listing&type=category [L]

ここでの問題は、2 つのルールが互いに競合していることです。

このルール;

ReWriteRule ^listing/category/(.*)/(.*)/(.*) ?module=listing&type=category&get=$1&c_id=$2&c_name=$3 [L]

この規則と矛盾します。

ReWriteRule ^listing/category/(.*)/(.*)/(.*) ?module=listing&type=category&orderType=$1&order=$2&page=$3 [L]

とにかくこの競合を解決する方法はありますか?

ご協力ありがとうございました。

4

1 に答える 1

2

とにかくこの競合を解決する方法はありますか?

getこれを解決するには、クエリ文字列とorderクエリ文字列の URI を相互に排他的にする必要があります。両方の正規表現がまったく同じであるため、2 番目の正規表現に一致するものはすべて最初の正規表現によって処理されるため、2 番目の正規表現は適用されません。

たとえば、一方を次のよう/order/category/(.*)/(.*)/(.*)に、もう一方を のようにすることができます/listing/category/(.*)/(.*)/(.*)。これら 2 つの URI は相互に排他的であり、競合することはありません。

さらに、貪欲ではなく、追加のパスをむさぼり食うので、すべてをに変更する必要があります(.*)([^/]*)(.*)

于 2013-01-13T03:29:21.577 に答える