2

私はmywebsite.comというドメイン名を持っていますが、ユーザーがwwwサブドメインを介して私のWebサイトにアクセスすることを好みます。

asp.net mvc3で検証とリダイレクトを簡単に行うにはどうすればよいですか?

私がphpを使用していたとき、私はそのようなことをしました:

if($_SERVER['SERVER_NAME'] != "www.mywebsite.com")
     header('Location: www.mywebsite.com');

asp.net(C#)でこの種のリダイレクトを実現するための同様の方法を見つけたいと思います(301リダイレクトを設定するのではなく、PHPで使用していたようなソフトリダイレクトを設定したい)。

各コントローラーのアクションメソッドで検証を実行し、ユーザーがサブドメインwww.mywebsite.comにいない場合はユーザーをリダイレクトできることはわかっていますが、検証とリダイレクトを1回記述したいのですが、見つかりません。どこ :/

どうもありがとう !

4

5 に答える 5

2

あなたが使用することができます:

Request.Url.ToString()

これにより URL が返され、「www.」が含まれているかどうかをすばやく確認できます。true の場合はリダイレクトします。ただし、IIS の URL 書き換えでこれを処理することをお勧めします。

ここのガイドに従ってください: http://www.dotnetexpertguide.com/2011/08/iis-7-redirect-domaincom-to.htmlこれは、domain.com を www.domain.com に移動させるためのものですが、同じように機能します反対の方法。

于 2012-12-27T14:33:12.257 に答える
0

If I am not totally missing something here, can't you just setup the host-header in the IIS settings for the site to include both www.domain.com as well as domain.com?

于 2012-12-28T18:42:44.343 に答える
0

実際、元の質問では、Moved Permanently/Found (301/302) の代わりに「ソフト」リダイレクト (201 または 202) を具体的に求めているため、Response.Redirect の代わりに条件行を次のようにする必要があると思います。

 if(!Request.Url.Host.Equals("www.mywebsite.com"))
 {
      HttpContext.Current.Response.Headers.Add("Location", "www.mywebsite.com");
 }

編集: Response.Redirect と組み合わせて使用​​して、ステータスを直接設定することもできると思います:

 if(!Request.Url.Host.Equals("www.mywebsite.com"))
 {
      HttpContext.Current.Response.Redirect("www.mywebsite.com");
      HttpContext.Current.Response.Status = "201 Created";
 }
于 2012-12-27T14:38:47.910 に答える
0

ヘッダー情報を追加/追加するだけの場合は、Response.AppendHeader()を使用してください。

Request.Url.ToString() プロパティは、ライアンの回答に従って、探している URL を確認できます。

于 2012-12-27T14:38:52.620 に答える
0

あなたはこのようなことを試すことができます

 if(!Request.Url.Host.Equals("www.mywebsite.com"))
 {
      Response.Redirect("website");
 }
于 2012-12-27T14:28:54.667 に答える