0

混乱する問題があります。.htaccessファイルには2つのルールがあり、1つは1つのURLパスのリクエストを処理し、もう1つは別のパスを再度チェックする必要があります。2番目のルールは最初のルールよりも一般的です。最初にインスタンスをキャッチし、[L]でルール処理を停止することを期待していますが、すべてが2番目のルールに失敗し、間違ったページに誘導されています。該当する場合は最初のルールを適用してから、ルールの処理を停止する必要がありますか?

表示される2つのルールは次のとおりです。

## Path 1 ##
RewriteCond %{REQUEST_URI} ^directory/.*-([0-9]+)/?$
RewriteRule ^directory/.*-([0-9]+)/?$ directory/page.php?id=$1 [L]

## Path 2 ##
RewriteCond %{REQUEST_URI} ^.*-([0-9]+)/?$
RewriteRule ^.*-([0-9]+)/$ page.php?id=$1 [L]

明らかな何かが欠けているかもしれませんが、私が理解したように、最初のルール(条件が満たされた場合)が適用され、その後、ルールの処理が停止します。

どんな助けでも大歓迎です。

ありがとうございました

4

1 に答える 1

2

パターンはすでにそれらを暗示しているため、実際にはRewriteCondディレクティブは必要ありません。RewriteRuleこれは私のテストで機能します:

## Path 1 ##
RewriteRule ^directory/.*-([0-9]+)/?$ /directory/page.php?id=$1 [L]

## Path 2 ##
RewriteRule ^.*-([0-9]+)/$ /page.php?id=$1 [L]

なんらかの理由でまだRewriteCondディレクティブが必要な場合は、%{REQUEST_URI}実際にはスラッシュで始まることに注意してください。スラッシュを一致させる必要があります。

于 2012-06-14T14:48:52.003 に答える