POST を介して入力を受け取り、リダイレクトする検索ページがある Django プロジェクトがあり/search/<search string>/
、このページが結果をレンダリングします。パーセント記号 (%) は検索でワイルドカードとして使用され (tes%er は testuser、tester などを返し、URL は次のようになります: example.com/search/tes%25er/
)、すべて Django 開発サーバーで正常に動作します。URL に手動で tes%er を書き込むと、自動的に tes%25er に変更されます。
現在、mod_wsgi を使用して Apache サーバーにデプロイしています。検索ページが にリダイレクトされるexample.com/search/tes%er/
と、サーバー エラーが発生しますBad Request. Your browser sent a request that this server could not understand.
。エンコードされた % 記号のように、URL に「25」を手動で追加すると、開発サーバーのように見え、正常に動作します。
Apache が %-sign を自動的にエスケープして機能する URL を作成する方法はありますか? % エスケープされていないことを理解するか、URL を作成する検索ページで醜いハックを行う必要がありますか? (このような醜いハックはしたくないので、ユーザーは手動で % を URL に追加して動作させることができません)。
編集: 検索ページから検索 URL にクエリを送信するコード。
if form.is_valid():
if 'search_user' in request.POST:
q = request.POST['search_user']
return redirect('/search/'+q)