2

我有一个 Composite C1 CMS 站点。

为了保持 SEO 汁液,我需要重定向一些旧的 - 主要是博客 URL - 像这样:http ://www.mydomain.com/en/news/news.php?b=68 到 http://mydomain.com/en /Blog/2013/04/30/友好的文章名称

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

大约有 100 个要重定向的链接。

'URL Aliases' 模块似乎运行良好,直到您添加查询字符串(上面的?b=68) - 然后它停止工作。

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

4

1 回答 1

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 别名的处理程序

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

于 2013-10-09T06:32:31.777 回答