在Sharepoint中将用户从旧Web重定向到另一个Web

时间:2010-04-07 09:30:42

标签: sharepoint sharepoint-2007

我希望添加在用户访问某些旧网站时重定向的功能。旧站点的URL未知,但服务器名称相同,例如

旧网址:

http://sharepoint/mySite/default.aspx

新网址网址:

http://sharepoint/myNewSite/...

mySite中有很多其他页面,其中大部分都必须重定向到新网站,但也有例外(例如,用户仍然可以查看网站内的文档)。我以为我必须通过某种方式捕获http请求并以自己的方式读取URL来以编程方式执行此操作。作为没有共享点的专家,我有一个快速的谷歌,并发现写一个网络部分可能是我的情况的最佳选择。

但我只是想知道,鉴于我的情况和需求,是编写网络部分,还是以编程方式编写,真的是理想的解决方案?或者是否有更快更快的方法来实现我想要的Sharepoint?

感谢。

5 个答案:

答案 0 :(得分:2)

您可以实施监听System.Web.IHttpModule事件的System.Web.HttpApplication.BeginRequest,检测请求网址是否指向旧网站,并在必要时重定向到新网站。

Sharepoint部分涉及创建Microsoft.SharePoint.Administration.SPWebConfigModification,将您模块的引用添加到您拥有的每个Web前端的web.config文件中。如果您将其实现为Web应用程序级功能,则功能接收器激活方法的代码将如下所示:

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
    var webApplication = (SPWebApplication)properties.Feature.Parent;
    var redirectionModuleType = typeof(MyRedirectionModule);
    var modification = new SPWebConfigModification()
    {
        Name = "add[@name='MyRedirectionModule']",
        Path = "configuration/system.web/httpModules",
        Owner = "MyModule",
        Sequence = 0,
        Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode,
        Value = "<add name=\"MyRedirectionModule\" type=\"" + redirectionModuleType.FullName + ", " + redirectionModuleType.Assembly.FullName + "\" />"
    };
    webApplication.WebConfigModifications.Add(modification);
    webApplication.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();
    webApplication.Update();
}

答案 1 :(得分:0)

你可以用三种方式做到这一点

  1. 创建自定义HTTP模块(良好解决方案)
  2. 在旧网站的母版页中编写一个javascript代码,以重定向到新页面(location.href)(易于创建,但从客户端进行导航)
  3. 使用重定向代码编写一个webpart,并在旧网站的母版页中部署(比point1更容易)

答案 2 :(得分:0)

您可以考虑自动将一些JavaScript逻辑注入处理重定向的网站集的每个页面,而不是修改母版页。

查看our free SharePoint Infuser tool

答案 3 :(得分:0)

如果您使用负载均衡器或ISA Server等反向代理,则可以在这些级别实施重定向规则。

答案 4 :(得分:0)

有人已经为你做了这件事:))

SharePoint Smart 404 Feature。它允许您添加重定向规则以创建虚荣URL并很好地处理404。