我正在创建内部(仅来自我们网站的链接)URL缩短服务。当我使用像.ly或tinyurl这样的服务然后将缩短的链接发布到facebook时,会显示目标预览(完整链接)。当我尝试使用我自己的页面执行此操作时,它会显示重定向页面。
例如http://youtu.be/2323会映射到http://www.youtube.com/watch?v=123456,但我的链接
http://exam.pl/2323将显示http://exam.pl/Redirect.aspx,而不是数据库中的实际页面。我是否需要重定向服务器本身或其他什么?
由于
更新:使用HttpHandler解决,如下面的答案所示。我更改了响应,因为显然Response.Redirect会自动发送302状态,而301更正确。
context.Response.Status = "301 Moved Permanently";
context.Response.AddHeader("Location", httplocation);
context.Response.End();
答案 0 :(得分:1)
我建议使用http处理程序而不是实际页面来执行重定向http://support.microsoft.com/kb/308001
我还建议您提供正确的301 http状态http://en.wikipedia.org/wiki/HTTP_301
更新:(这是内存中的purley,可能无法按原样编译)
public class IISHandler1 : IHttpHandler
{
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
string url = content.Request.Url.ToString();
string newUrl = Translate(url);
context.Response.ResponseCode = 301;
context.Response.Redirect(newUrl);
}
}
您在处理程序之后处理模块,因此您应该在处理程序中处理请求。如果不可能处理,那么只需忽略它并让它通过