0

RedirectToAction メソッドを使用して、単一のアクション (またはコントローラー) に存在しない場合に www プレフィックスを追加する簡単な方法はありますか?

Redirect() を使用してみましたが、他の問題がいくつかあります。セッションを再開すると思います。

アップデート:

次のような属性を実装するクラスを追加しました。

public class ExtendAttributes
{
    public class AddwwwPrefix : FilterAttribute, IAuthorizationFilter
    {
        public void OnAuthorization(AuthorizationContext filterContext)
        {

            string host = filterContext.HttpContext.Request.Url.Host;
            if (host.Contains("www."))
            {
                return; //It already contains www. so don't change it
            }
            else
            {
                host = "www." + filterContext.HttpContext.Request.Url.Host;
            }

            // redirect to HTTP  
            string url = "http://" + host + filterContext.HttpContext.Request.RawUrl;
            filterContext.Result = new RedirectResult(url);
        }
    } 
}

したがって、次のように使用できます。

[ExtendAttributes.AddwwwPrefix]
   public ActionResult MyAction()
    {
      ...
4

1 に答える 1

0

これを実装するように IIS を構成できます。

[バインディング] で、サイトが提供しているすべてのホスト名を追加します。

HTTP 機能の URL 書き換えを追加し、受信規則を追加します。

  • URL の一致: 要求された URL は、正規表現を使用してパターンに一致します

パターン:(.*)

  • 条件はすべて一致

入力 {HTTP_HOST} がパターンに一致しません^www\..*

  • アクション アクション タイプ リダイレクト

リダイレクト URL:http://(your target domain)/(R:1)

クエリ文字列を追加、リダイレクト タイプPermanent (301)

ニーズに合わせて調整してください。

于 2012-11-30T11:02:44.990 に答える