复合C1 - 'URL别名',使用Querystring重定向URL

时间:2013-10-08 00:03:26

标签: c1-cms

我有一个Composite C1 CMS网站。

为了保持搜索引擎优化,我需要重定向一些旧的 - 主要是博客网址 - 如下所示:http://www.mydomain.com/en/news/news.php?b=68http://mydomain.com/en/Blog/2013/04/30/Friendly-Article-Name

http://www.mydomain.com/en/news/news.php?b=69http://mydomain.com/en/Blog/2013/04/30/Another-Friendly-Article-Name

大约有100个重定向链接。

'URL别名'模块似乎运行良好,直到你添加一个查询字符串(?b = 68以上) - 然后它就会停止工作。

如何重定向几个相同的URL,每个URL都有不同的查询字符串?

1 个答案:

答案 0 :(得分:2)

这绝对是Url Aliases包中的一个错误。

最快的方法可能是推出自己的http模块,至少在发布修复程序之前。 您可以在GitHub上从软件包的repo中获取源代码并进行调整以解决问题,确保从web.config中取消注册捆绑的http模块并注册您自己的。

当前的http模块源位于:https://github.com/CPHCloud/c1packages-urlaliases/blob/v1.0.2/CphCloud.Packages.UrlAlias/UrlAliasHttpModule.cs

incomingUrlPath的值更改为使用PathAndQuery而不是AbsolutePath,如下所示:

...
static void httpApplication_BeginRequest(object sender, EventArgs e)
    {
        var httpApplication = (HttpApplication)sender;
        var incomingUrlPath = HttpUtility.UrlDecode(httpApplication
            .Context.Request.Url.PathAndQuery.TrimEnd(new[] { '/' }));
....

在您的web.config文件中,您应取消注册Url ALiases的处理程序

<!--add name="UrlAlias" type="CphCloud.Packages.UrlAlias.UrlAliasHttpModule,
  CphCloud.Packages.UrlAlias, 
  Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /-->

并注册您自己的

<add name="CustomUrlAlias" type="CphCloud.Packages.UrlAlias.UrlAliasHttpModule, 
  YourAssemblyName, 
  Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/> 

完全披露:我是URL Aliases包的作者。