5

書き換えルールに関して常に大きな問題を抱えている理由がわかりませんが、クエリ文字列が存在する場合はクエリ文字列に追加し、存在?しない場合は追加したいだけです。実際には、ブラウザで URL が変更されているかどうかは気にしません。正しいターゲット ページをロードする必要があるだけです。

RewriteRule /cia16(.*)\?(.*) /cia$1?$2&CIA=16
RewriteRule /cia16(.*) /cia/$1?CIA=16

私が行くと/cia16/steps.php?page=1、実際に書き換えられ/cia/steps.php?CIA=16ます-つまり、クエリ文字列部分は、書き換えの目的でURLの一部とは見なされないことを受け入れているようです。

リライトが既存のクエリ文字列で適切に機能するようにするには、どうすればよいですか?

4

1 に答える 1

15

内のクエリ文字列と照合することはできません。 内の変数RewriteRuleと照合する必要があります。ただし、クエリ文字列を追加するだけの場合は、次のフラグを使用できます。%{QUERY_STRING}RewriteCondQSA

RewriteRule /cia16(.*) /cia/$1?CIA=16 [QSA]

URI:/cia16/steps.php?page=1は に書き換えられ/cia/steps.php?CIA=16&page=1ます。何らかの理由で のpage=1 前にが必要な場合は、次のCIA=16ようにすることができます。

RewriteRule /cia16(.*) /cia/$1?%{QUERY_STRING}&CIA=16
于 2013-04-11T00:05:30.783 に答える