我正在尝试执行以下重定向:
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"
导致内部服务器错误。你们有没有看到这段代码有什么问题?
答案 0 :(得分: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);
}
编码参数将变为
板= _master&安培;行动= opentopic&安培;主题= 4和;版面= The_Forum%22 +%22%2fcontent%2f1998-09-10%2f1004%2fwet-H2S --- HIC-关注--- AE-安培< / p>
但您的浏览器地址栏将保留参数
“板= _master&安培;行动= opentopic&安培;主题= 4和;版面= The_Forum” + “%2fcontent%2f1998-09-10%2f1004%2fwet-H2S --- HIC-关注--- AE-安培”
答案 1 :(得分:0)
记住RewriteRule:
请改用此重写规则:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+cgi-bin/teemz/teemz\.cgi\?board=_master&action=opentopic&topic=4&forum=The_Forum [NC]
RewriteRule ^ /content/1998-09-10/1004/wet-h2s---hic-concern---ae-amp [L,R=301]