1

.htaccess ファイルで次の書き換えルールを使用していますが、文字列にパラメーターを追加すると、書き換えが失敗します。

RewriteRule ^c([0-9]+)/[a-zA-z0-9\-]+$ category.php?id=$1 [L]

例えば:

次のようにすると、すべて正常に動作します。

c87/newest-post

しかし、私が行くと:

c87/newest-post?param1=this&param2=that
c87/newest-post/?param1=this&param2=that

正しくリダイレ​​クトされず、失敗します。QSAタグと関係があると思いますが、リダイレクトに関する知識が乏しいため、何が間違っているのかわかりません。

4

1 に答える 1

1

置換 URL でクエリ文字列を指定したため、QSAフラグが必要です。

置換 URI にクエリ文字列が含まれている場合、RewriteRule の既定の動作では、既存のクエリ文字列が破棄され、新しく生成されたクエリ文字列に置き換えられます。[QSA] フラグを使用すると、クエリ文字列が結合されます。

末尾のスラッシュについては、さらに微調整が必​​要です。推奨される RewriteRule は次のとおりです。

RewriteRule ^c([0-9]+)/[a-zA-z0-9\-]+/?$ category.php?id=$1 [QSA,L]
# c87/newest-post?param1=this&param2=that  -> category.php?id=87&param1=this&param2=that
# c87/newest-post/?param1=this&param2=that -> category.php?id=87&param1=this&param2=that
于 2012-06-26T08:53:56.233 に答える