私のサイトをPHPからRuby on Railsに更新しています。古いページからリダイレクトする方法は?古いサイトからrubyでRubyアプリケーションをリダイレクトする方法url
例:
古いページ:/index.php?p=v&tag=__some_word__
新しいページ:最初@mudasobwaで/tags/__some_word__
私のサイトをPHPからRuby on Railsに更新しています。古いページからリダイレクトする方法は?古いサイトからrubyでRubyアプリケーションをリダイレクトする方法url
例:
古いページ:/index.php?p=v&tag=__some_word__
新しいページ:最初@mudasobwaで/tags/__some_word__
が右であり、それは、そのようなプロキシサーバーへの書き換えを移動するのが一般的です。
しかし、私は数年前と同じ状況に直面し、私はnginx設定にアクセスできませんでした。私は別のパラメータとその値に基づいて要求を処理する方法を決定したアクションで
get "/index.php", :to => 'php_path_handler#index'
# params: {"p"=>"v", "tag"=>"__some_word__", "controller"=>"php_path_handler", "action"=>"index"}
:私のソリューションは、古いPHPのリクエストを処理するために別のコントローラを作成することでした。場合によっては、404または410のエラーが返されたばかりです。それ以外の場合は、新しいルートが存在することを示すステータス301の別のコントローラアクションにリダイレクトされました。
別の考え方:他のメンテナーやプログラマーにとっては、古いPHPルートの処理/書き換えがnginxなどに移った場合、どのように処理されているかを知ることは難しいかもしれません。あなたは、プロキシサーバーにいくつかのアプリケーションロジックを移動すると言うことができます。これは、開発環境とテスト環境ではテストするのが難しいです。
あなたが提供した情報だけで解決策を提示するのは難しいです。あなたの例では、クエリパラメータ 'tag = someWord'はパス'/tags/someWord'に変換されます。 PHPルートに複数のクエリパラメータがあった場合、マッピングはどのように機能しますか?あなたの例では、 'p = v'部分を無視することをどのように知っていますか? –
これはあなたのhttpサーバ(apache/nginx/..)でうまくいくはずです。 – mudasobwa
はい、?p = vは無視します。私は&タグパラメータのみを必要とします。私はinginx設定ファイルに書き込みます: 場所/ { 書き換え^/index.php?p = v&tag =(。*)$/tags/$ 1/permanent; } しかし、リダイレクトは機能しません。おそらく、私はルールを作るのが間違っている –