2013-10-08 66 views
2

我有一个复合C1 CMS网站。复合C1 - '网址别名',重定向网址与查询字符串

为了保持SEO汁,我需要重定向一些旧的 - 主要是博客的网址 - 是这样的: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都有不同的查询字符串?

回答

2

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

解决这个问题的最快方法很可能就是推出自己的http模块,至少在发布修补程序之前。 你可以从GitHub的软件包回购中获取源代码,并调整它以解决问题,确保从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别名'handler

<!--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别名包的作者。

+0

非常感谢。 *开发人员*(眨眼睛)将全面修复它,你有什么想法吗? – niico

+0

复合材料必须在提交后审查包装,因此在几天内应该启动。当我提交它时,我会将它添加到Github回购中作为预发布,并发布到构建的链接。然后,您可以在Composite将其发布到其附加市场之前将其作为本地包安装。 –

+0

优秀 - 我可以等几天。非常感谢。我从来没有'更新'一个包 - 我卸载然后重新安装? – niico

相关问题