URL Shortener不会预览目标页面

时间:2011-09-07 00:18:01

标签: c# asp.net redirect

我正在创建内部(仅来自我们网站的链接)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();

1 个答案:

答案 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);
        }

    }

您在处理程序之后处理模块,因此您应该在处理程序中处理请求。如果不可能处理,那么只需忽略它并让它通过