如果查询字符串中有参数,如何使永久301重定向工作?

时间:2010-07-22 11:21:14

标签: asp.net asp-classic http-status-code-301

我将一些旧的asp页面移动到新的aspx网站。 在我使用的所有旧页面中(对于文件example.asp):

Response.Status = "301 Moved Permanently"; 
Response.AddHeader("Location","http://www.example.com/example.aspx");

问题是当页面example.com/example.asp?param=value&param2=value2
时 请求 - 重定向不起作用...

任何......?

3 个答案:

答案 0 :(得分:2)

此解决方案将适用于传统的ASP页面。基本上是斯梅尔奇所说的一个例子。

<%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", "http://www.test.com/default.aspx?" + Request.QueryString
Response.End
%>

答案 1 :(得分:0)

将查询字符串参数添加到位置标题的末尾,以问号分隔。我相信它在Request.Url.Query。

答案 2 :(得分:0)

你可以尝试这样的方法来确保查询字符串的传递:

protected void Page_Load(object sender, EventArgs e)
{
    Response.Status = "301 Moved Permanently";
    string sQueryString = this.Request.ServerVariables["QUERY_STRING"];
    Response.AddHeader("Location", String.Format("http://www.domain.com/example.aspx?{0}",   sQueryString));
}