0

次のリダイレクトを実行しようとしています。

Redirect 301 "/cgi-bin/teemz/teemz.cgi?board=_master&action=opentopic&topic=4&forum=The_Forum" "/content/1998-09-10/1004/wet-h2s---hic-concern---ae-amp"

そして、内部サーバー エラーが発生します。このコードに何か問題があることがわかりますか?

4

2 に答える 2

0

基本的に、「/」などの不正な文字がいくつかあります

各パラメータの値をエンコードする必要があります。使用しているプログラミング言語でそれを行う方法はわかりませんが、ASP.NET MVC にはそのためのライブラリがあります。

 public ActionResult Index2()
    {
        var sb = new StringBuilder();
        foreach (var key in Request.QueryString.AllKeys)
            sb.AppendFormat("&{0}={1}", key, HttpUtility.UrlEncode(Request.QueryString[key]));
        var parameters = sb.Remove(0, 1);
        const string rawurl = "http://localhost:49534/home?";
        var url = string.Format("{0}{1}", rawurl, sb);
        return Redirect(url);
    }

エンコードされたパラメータは次のようになります

board=_master&action=opentopic&topic=4&forum=The_Forum%22+%22%2fcontent%2f1998-09-10%2f1004%2fwet-h2s---hic-concern---ae-amp

ただし、ブラウザのアドレスバーにはパラメータが保持されます

"?board=_master&action=opentopic&topic=4&forum=The_Forum"+"%2fcontent%2f1998-09-10%2f1004%2fwet-h2s---hic-concern---ae-amp"

于 2013-01-02T09:37:32.200 に答える
0

RewriteRule を覚えておいてください:

  • 先頭のスラッシュと一致しません
  • クエリ文字列と一致しません

代わりに、この書き換えルールを使用してください。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+cgi-bin/teemz/teemz\.cgi\?board=_master&action=opentopic&topic=4&forum=The_Fo‌​rum [NC]
RewriteRule ^ /content/1998-09-10/1004/wet-h2s---hic-concern---ae-amp [L,R=301]
于 2013-01-02T10:42:06.137 に答える