Question

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 transfert à notre site afin que quelque chose comme ce qui suit se produise:

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

Je m'attends vraiment à ce que ce type de choses gagne en popularité auprès de nos utilisateurs au fil du temps. Je recherche donc une solution évolutive. J'ai lu divers articles sur la création d'un / site / avec des balises méta de transfert ou un type de page SharePoint de transfert. J'ai aussi vu des discussions sur l'ajout de répertoires virtuels, etc. directement dans IIS. Toutes ces solutions semblent excessives et prennent inévitablement plus de mémoire ou de temps de traitement sur les serveurs Web.

Je suis actuellement enclin à écrire un module http pouvant être configuré dans le fichier 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 par la suite et qui alourdira le fardeau de traitement sur nos serveurs Web. Merci!

Était-ce utile?

La solution

J'ai implémenté la redirection d'URL avec MOSS à l'aide de la route 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 / réécriture d'url avec sharepoint-moss-2007 /

Jetez un coup d'œil et dites-moi si cela vous aide et si vous avez des questions.

Mise à jour : le lien ci-dessus n'est plus valide. Voici donc le texte de la page que j'ai utilisée pour la redirection d'URL.

Après avoir déconné un peu, j’ai trouvé un bon moyen de le faire. Lorsque je cherchais des exemples sur le Web, beaucoup de gens disaient que cela ne pouvait pas être fait. Mais à la fin, il n’a pas fallu beaucoup de choses pour la mettre en œuvre. Voici un module HttpModule que j'ai écrit pour faire le travail.

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

Et HttpContext.Current.RewritePath (redirect, false); va pousser les en-têtes nécessaires n tels que de manière à ce que la page .aspx destinataire 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
            }
        }
    }
}

Autres conseils

Avez-vous examiné les mappages des accès de substitution?

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

Si vous êtes prêt à payer pour une solution. Jetez un coup d'oeil:

PAS GRATUIT - > http://www.muhimbi.com/Products/SharePoint-URL-Shortener. aspx

En fonction du nombre de redirections, vous souhaiterez peut-être implémenter un module HTTP comme indiqué), mais pourquoi ne pas extraire

GRATUIT - > http://www.codeplex.com/sharepointsmart404

Utilisez la fonctionnalité de réécriture d'URL dans IIS. (Je crois que c'est une extension IIS 7)

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top