Ссылки с расширением .aspx и без него. - PullRequest
1 голос
/ 28 сентября 2008

Можно настроить сервер так, чтобы он позволял использовать ссылки с расширением .aspx и без него.

Если да, как я могу это настроить.

Я работаю на клиентском сайте, который использует umbraco. Я знаю, что это встроено в дружественную возможность URL. К сожалению, сайт уже работает и включает эту функцию для целого ряда ссылок.

Проблема в том, что они хотят использовать рекламные URL-адреса, такие как www.sitename.com/promotion, без добавления расширения .aspx. И мы не хотим сталкиваться с проблемой обеспечения широкого доступа к сайту для переписывания URL-адресов и отслеживания всех битых ссылок.

Ответы [ 3 ]

3 голосов
/ 28 сентября 2008

У Скотта Гатри есть хороший пост на эту тему.

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

1 голос
/ 29 сентября 2008

Я сделал это раньше, написав простой HttpModule, пару замечаний:

  • Необходимо указать 404 ошибки в IIS на странице aspx, в противном случае IIS не вызовет среду выполнения ASP.NET, а HTTPModule никогда не ударится.
  • Лучше всего ловить и перенаправлять с тщеславных URL, а не как полнофункциональный urlrewrite.
    public class UrlRewrite : IHttpModule
    {
        public void Init(HttpApplication application)
        {
            application.BeginRequest += (new EventHandler(this.Application_BeginRequest));
        }

        private void Application_BeginRequest(Object source, EventArgs e)
        {
            // The RawUrl will look like:
            // http://domain.com/404.aspx;http://domain.com/Posts/SomePost/
            if (HttpContext.Current.Request.RawUrl.Contains(";")
                && HttpContext.Current.Request.RawUrl.Contains("404.aspx"))
            {
                // This places the originally entered URL into url[1]
                string[] url = HttpContext.Current.Request.RawUrl.ToString().Split(';');

                // Now parse the URL and redirect to where you want to go, 
                // you can use a XML file to store mappings between short urls and real ourls.

                string newUrl = parseYourUrl(url[1]);
                Response.Redirect(newUrl);
            }

            // If we get here, then the actual contents of 404.aspx will get loaded.
        }

        public void Dispose()
        {
            // Needed for implementing the interface IHttpModule.
        }
    }
0 голосов
/ 29 сентября 2008

На полпути вниз по разделу Полное управление URI предоставляет ссылки и ряд методов для достижения этой цели: http://blogs.msdn.com/bags/archive/2008/08/22/rest-in-wcf-part-ix-controlling-the-uri.aspx

...