我有一个Composite C1 CMS网站。
为了保持搜索引擎优化,我需要重定向一些旧的 - 主要是博客网址 - 如下所示:http://www.mydomain.com/en/news/news.php?b=68 至 http://mydomain.com/en/Blog/2013/04/30/Friendly-Article-Name
和
http://www.mydomain.com/en/news/news.php?b=69 至 http://mydomain.com/en/Blog/2013/04/30/Another-Friendly-Article-Name
大约有100个重定向链接。
'URL别名'模块似乎运行良好,直到你添加一个查询字符串(?b = 68以上) - 然后它就会停止工作。
如何重定向几个相同的URL,每个URL都有不同的查询字符串?
答案 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包的作者。