2

Composite C1 CMS サイトを持っています。

SEO ジュースを維持するには、いくつかの古い URL (主にブログの URL) を次のようにリダイレクトする必要があります: http://www.mydomain.com/en/news/news.php?b=68 to http://mydomain.com/en /ブログ/2013/04/30/フレンドリー記事名

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 をリダイレクトするにはどうすればよいですか?

4

1 に答える 1

2

これは間違いなく Url Aliases パッケージのバグです。

これを回避する最も簡単な方法は、少なくとも修正が公開されるまで、独自の http モジュールを展開することです。GitHub のパッケージのリポジトリからソースを取得し、微調整して問題を修正できます。バンドルされている http モジュールを web.config から登録解除し、代わりに独自のモジュールを登録してください。

現在の http モジュールのソースはこちら: https://github.com/CPHCloud/c1packages-urlaliases/blob/v1.0.2/CphCloud.Packages.UrlAlias/UrlAliasHttpModule.cs

次のように、 の値を の代わりにincomingUrlPath使用するように変更します。PathAndQueryAbsolutePath

...
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 エイリアス パッケージの作成者です。

于 2013-10-09T06:32:31.777 に答える