他のすべての URL 書き換えが完全に機能するのに、一体なぜこれが機能しないのですか。
rewrite "^/search/?\?q(.+)$" /search.php?q$1 break;
私はnginxとそのすべてを再起動しました。
書き換えは uri パスでのみ機能します。デフォルトでは新しい URL に自動的に付加されるため、クエリ文字列部分を書き直す必要はありません。
rewrite /search /search.php break;
たとえば、/search?q=something は /search.php?q=something に書き込まれます。
詳細については、 http://wiki.nginx.org/HttpRewriteModule#rewriteを参照してください。以下のこの行はあなたの質問に対処します
また、rewrite はパラメーターではなく、パスに対してのみ動作します。