2009-07-29 4 views
2

有効なルートに一致するURLに後続のスラッシュを追加したいが、現在はスラッシュで終わらないwww.example.com/url301ルートが一致した後コントローラが実行される前にリダイレクト

URLは私が301に希望の有効なルートにマッチした後

は同じURLにリダイレクトするが、私はそれに探していくつかの時間を費やしてきたが、私www.example.com/url/

末尾のスラッシュすなわちを追加しますそれを理解しているようには見えない。

私はルートがPostResolveRequestCacheイベントで照合されていると信じていますが、そのイベント中またはその後にどのようにroutedataにアクセスして有効なルートが一致したかを知る方法がわかりません。有効なルートが一致していることを確認できれば、URLがスラッシュで終わることを確認できます。

私はそれが十分明確であることを望みます、あなたがもっと情報を必要とするかどうか教えてください。

答えて

0

あなたは、SEOの目的で重複するコンテンツを排除しようとしていると仮定します。

Scott Hanselmanは、IIS7リライトモジュールでこれを行うことができると言います(IIS7を実行していますか?)。彼の投稿はhttp://www.hanselman.com/blog/ASPNETMVCAndTheNewIIS7RewriteModule.aspxです。

+0

。 今はIIS6を実行していますが、書き換えモジュールがインストールされているので、この方法を使用することができます。これにより、すべての着信要求が書き換えられますが、有効なルートのみを書き換え、無効な​​URLをそのまま残しておきたいと思います。 実際には、ベースコントローラーでアクションフィルターを使用して、スラッシュで終わらないURLを書き直しました。それはこれまでかなりうまくいっています。 私が使ったことについてこのURLを参照してください... http://www.devproconnections.com/tabId/180/itemId/4576/Putting-the-IIS-SEO-Toolkit-to-work-with-ASPNET- M.aspx – Paul

-1

これは、アクションフィルタにぴったりのように聞こえる:はい、私は同じ内容への複数のパスを持っていないことを保証しようとしている

public class EnforceTrailingSlashAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     if (!filterContext.HttpContext.Request.Path.EndsWith("/")) 
     { 
     filterContext.Result = new RedirectResult(
      filterContext.HttpContext.Request.Path + "/");    
     } 
    } 
} 
関連する問題