Лучшая практика для URL-адреса / перенаправления SharePoint vanity

StackOverflow https://stackoverflow.com/questions/1201180

  •  05-07-2019
  •  | 
  •  

Вопрос

Мой работодатель использует MOSS 2007 для внутренней сети нашей компании.Он работает исключительно по защищенному протоколу http, а также доступен внешнему миру через ISA.В настоящее время у меня есть запрос на добавление URL-адреса пересылки на наш сайт, чтобы произошло что-то вроде следующего:

intranet.mycompany.com/vanityname
перенаправляет на -> intranet.mycompany.com/somedeeplink/default.aspx

Я полностью ожидаю, что такого рода вещи со временем станут более популярными среди наших пользователей.Поэтому я ищу масштабируемое решение.Я читал различные статьи о создании /site / с мета-тегами пересылки или типом страницы пересылки SharePoint.Я также видел некоторые, в которых говорится о добавлении виртуальных каталогов и т.д. Непосредственно в IIS.Все эти решения кажутся излишними и неизбежно занимают больше памяти или времени обработки на веб-серверах.

В настоящее время я склоняюсь к написанию http-модуля, который можно настроить в web.config и выполнять перенаправления.Я хотел получить отзыв, чтобы узнать, делал ли кто-нибудь еще что-то подобное в SharePoint 2007 и были ли у него какие-либо предложения.Опять же, я хотел бы реализовать что-то масштабируемое без внесения серьезных изменений в дальнейшем и с минимальной нагрузкой на наши веб-серверы.Спасибо!

Это было полезно?

Решение

Я реализовал перенаправление URL-адресов с помощью MOSS, используя HTTP-модуль route.Я задокументировал код, который я использовал, и какие параметры работали здесь лучше всего для меня;

http://scaredpanda.com/2008/08/url-rewriting-with-sharepoint-moss-2007/

Взгляните и дайте мне знать, если это поможет вам и если у вас возникнут какие-либо вопросы.

Обновить: Ссылка выше больше не действительна, поэтому здесь текст со страницы, которую я использовал для перенаправления URL.

Немного повозившись с этим, я придумал хороший способ сделать это.Когда я искал примеры в Интернете, было много людей, говорящих, что это невозможно сделать.Но, в конце концов, для его реализации на самом деле не потребовалось много времени.Вот HttpModule, который я написал для выполнения этой работы.

Ключевыми элементами являются this.app.BeginRequest += new EventHandler(app_BeginRequest), который выполняет шаги перед запросом и позволяет модулю включить его перенаправление.

И HttpContext.Current.Перезаписать путь (перенаправление, false);переместит необходимые заголовки n таких вперед, чтобы принимающая страница .aspx поняла, как правильно опубликовать ответ.

using System;
using System.Data;
using System.Data.SqlClient;
using System.Reflection;
using System.Collections;
using System.Text;
using System.Web;
using System.Web.Caching;
using System.Web.SessionState;
using System.Security.Cryptography;
using System.Configuration;
using System.Threading;
using System.IO;
using System.Security;
using System.Security.Principal;

namespace ScaredPanda
{
    public sealed class RewriteHttpModule : IHttpModule
    {
        HttpApplication app = null;
        ///
        /// Initializes the httpmodule
        ///
        public void Init(HttpApplication httpapp)
        {
            this.app = httpapp;
            this.app.BeginRequest += new EventHandler(app_BeginRequest);
        }

        public void app_BeginRequest(Object s, EventArgs e)
        {
            try
            {
        //determine if the income request is a url that we wish to rewrite.
        //in this case we are looking for an extension-less request
                string url = HttpContext.Current.Request.RawUrl.Trim();
                if (url != string.Empty
                    && url != "/"
                    && !url.EndsWith("/pages")
                    && !url.Contains(".aspx")
                    && url.IndexOf("/", 1) == -1)
                {
                    //this will build out the the new url that the user is redirected
                    //to ie pandas.aspx?pandaID=123
                    string redirect = ReturnRedirectUrl(url.Replace("/", ""));

            //if you do a HttpContext.Current.RewritePath without the 'false' parameter,
                    //the receiving sharepoint page will not handle post backs correctly
            //this is extremely useful in situations where users/admins will be doing a
                   //'site actions'  event
                   HttpContext.Current.RewritePath(redirect, false);
                }
            }
            catch (Exception ex)
            {
                //rubbish
            }
        }
    }
}

Другие советы

Вы изучали Альтернативные сопоставления доступа?

http://technet.microsoft.com/en-us/library/cc263208.aspx

Если вы готовы заплатить за решение.Взгляните на:

НЕ БЕСПЛАТНО -> http://www.muhimbi.com/Products/SharePoint-URL-Shortener.aspx

В зависимости от количества перенаправлений вы можете захотеть реализовать HTTP-модуль, как указано) но как насчет проверки

СВОБОДНО -> http://www.codeplex.com/sharepointsmart404

Используйте функцию перезаписи URL-адреса в IIS.(Я полагаю, что это расширение IIS 7)

http://www.iis.net/download/urlrewrite

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top