2009-07-29 9 views
4

Mon employeur utilise MOSS 2007 pour l'intranet de notre société. Il fonctionne uniquement sur http sécurisé et est également exposé au monde extérieur via ISA. J'ai actuellement une demande pour ajouter une URL de redirection à notre site afin que quelque chose comme ce qui suit se produira:Meilleure pratique pour l'URL de redirection SharePoint/redirection

intranet.mycompany.com/vanityname
redirige vers -> intranet.mycompany.com/somedeeplink/default. aspx

Je m'attends à ce que ce genre de chose devienne plus populaire auprès de nos utilisateurs au fil du temps. Je suis donc à la recherche d'une solution qui évolue. J'ai lu divers articles sur la création d'un/site/avec des balises meta de transfert ou un type de page de redirection SharePoint. J'ai également vu certains qui parlent d'ajouter des répertoires virtuels, etc. directement dans IIS. Toutes ces solutions semblent être excessives et prennent inévitablement plus de mémoire ou de temps de traitement sur les serveurs Web.

Je suis actuellement penché vers l'écriture d'un module http qui peut être configuré dans web.config et effectuer des redirections. Je voulais obtenir des commentaires pour voir si quelqu'un d'autre avait fait quelque chose de similaire dans SharePoint 2007 et avait des suggestions. Encore une fois, j'aimerais mettre en œuvre quelque chose qui évolue sans apporter de changements majeurs plus tard et qui imposera un minimum de travail à nos serveurs Web. Merci!

Répondre

3

Ive mis en œuvre URL redirigeant avec MOSS en utilisant la voie du module HTTP. J'ai documenté le code que j'ai utilisé et quels paramètres ont fonctionné le mieux pour moi ici;

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

Jetez un oeil et laissez-moi savoir si cela vous aide et si vous avez des questions.

Mise à jour: Le lien ci-dessus n'est plus valide, donc voici le texte de la page que j'ai utilisé pour la redirection d'URL. Après m'être un peu amusé, j'ai trouvé un bon moyen de le faire. Quand je cherchais des exemples sur le web, il y avait beaucoup de gens qui disaient que ça ne pouvait pas être fait. Mais finalement, il n'a pas fallu grand-chose pour l'implémenter. Voici un HttpModule que j'ai écrit pour faire le travail.

Les éléments clés sont this.app.BeginRequest + = new EventHandler (app_BeginRequest) qui passe devant la requête et permet au module d'obtenir sa redirection.

Et HttpContext.Current.RewritePath (redirect, false); poussera les en-têtes nécessaires vers l'avant afin que la page .aspx de réception comprenne comment poster correctement.

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 
      } 
     } 
    } 
} 
+0

Merci, après avoir examiné les commentaires que c'était la meilleure solution pour ma situation. J'ai jeté un coup d'œil à votre code et j'ai pu le refactoriser pour répondre précisément à mes besoins. J'adorerais le poster mais il ne semble pas que le système de commentaire ici me le permette (pas assez de caractères). Merci encore! –

+0

C'était exactement ce dont j'avais besoin pour résoudre mon problème aujourd'hui. En fait, j'ai fini par lire la vanité de mappage d'URL à partir d'une liste de points de partage personnalisée que j'ai créée et cela a très bien fonctionné. +1 – Hardwareguy

2

Avez-vous examiné les autres mappages d'accès?

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

+0

Battez-moi. Vous pouvez accomplir beaucoup facilement avec les AAM. – Chrisb

+0

Cela semble être limité au protocole, à l'hôte et au port. J'ai besoin de rediriger les liens profonds. Bien que je n'étais pas au courant de cette fonctionnalité, j'apprécie l'info! –

Questions connexes