1

正規表現は私にとって非常に新しいものです。正規表現を使用して次の形式のリンクをリダイレクトするのに問題があります。

url/search/aaa.bbb?label=dasdsf32r%20sdFa

次のようなものに:

url/search.php?keyword=dasdsf32r%20sdFa

以下の正規表現はhttp://www.myregextester.com/で機能しますが、.htaccess ファイルに入れると、リダイレクトが機能しません。

RewriteRule ^url/search/aaa\.bbb\?label=([^\t\r\n\v\f]+)$ url/search.php?keyword=$1 [NC,L,END]
4

2 に答える 2

2

クエリ文字列 ( の後のすべて) は、ディレクティブ?のパターンの照合に使用される URI の一部ではありません。または推奨される変数をRewriteRule使用する必要があり、グループ化はシンボルで後方参照できます。%{THE_REQUEST}%{QUERY_STRING}%

RewriteCond %{QUERY_STRING} ^label=([^&]+)$
RewriteRule ^url/search/aaa\.bbb$ /url/search.php?keyword=%1 [L,NC]

実際にリダイレクトしたい場合 (ロケーションバーに表示されるようにブラウザーを新しい URL に送信する場合など)、書き換えフラグにRまたは(永続的なリダイレクト) を含める必要もあります。R=301

[L,NC,R]
于 2013-11-12T01:59:34.717 に答える
1

使用する必要があります

RewriteCond %{THE_REQUEST}

GETパラメータを解析/変更したい場合は、パラメータRewriteRuleが含まれていないため...

さらに、 を使用する必要があります[NC,L,R=301]

于 2013-11-12T00:33:04.987 に答える