Лучшая практика для SharePoint тщеславия URL-адрес - PullRequest
3 голосов
/ 29 июля 2009

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

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

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

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

Ответы [ 5 ]

3 голосов
/ 29 июля 2009

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

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

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

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

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

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

И HttpContext.Current.RewritePath (перенаправление, ложь); будет выдвигать необходимые заголовки 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
            }
        }
    }
}
2 голосов
/ 29 июля 2009

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

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

1 голос
/ 29 июля 2009

Если вы открыты для оплаты решения. Посмотрите:

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

0 голосов
/ 08 февраля 2012

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

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

0 голосов
/ 29 июля 2009

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

БЕСПЛАТНО -> http://www.codeplex.com/sharepointsmart404

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...