.NET MVC に組み込みのフレンドリなルーティング ライブラリを使用すると、このようなことができるようになります。
.NET MVC に組み込まれているもので何をしたいのか明らかでない場合は、MVC フレームワークを使用して、www で始まる URL を非 www の URL に自動的にリダイレクトする必要があります。
.NET MVC に組み込みのフレンドリなルーティング ライブラリを使用すると、このようなことができるようになります。
.NET MVC に組み込まれているもので何をしたいのか明らかでない場合は、MVC フレームワークを使用して、www で始まる URL を非 www の URL に自動的にリダイレクトする必要があります。
IIS7URL書き換えモジュールを使用できます
web.config
IISからセットアップするか、次の場所に配置することができます<system.webServer>
。
<rewrite>
<rules>
<rule name="Canonical" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www[.](.+)" />
</conditions>
<action type="Redirect" url="http://{C:1}/{R:0}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
または、次の場所でこのリダイレクトを行うこともできますglobal.asax.cs
。
protected void Application_BeginRequest(object sender, EventArgs ev)
{
if (Request.Url.Host.StartsWith("www", StringComparison.InvariantCultureIgnoreCase))
{
Response.Clear();
Response.AddHeader("Location",
String.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Host.Substring(4), Request.Url.PathAndQuery)
);
Response.StatusCode = 301;
Response.End();
}
}
しかし、@ Samが言ったことを思い出してください。詳細については、こちらをご覧ください。
<rewrite>
<rules>
<rule name="Canonical" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^([a-z]+[.]net)$" />
</conditions>
<action type="Redirect" url="http://www.{C:0}/{R:0}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
ホストに一致する正規表現パターンを作成{C:0}
1, 2, ..., N
し、一致するグループを取得するために使用します。
www から not-www への 301 リダイレクトを行う方法はいくつかあります。一部のプロジェクトでは、このリダイレクト ロジックを ASP.NET レベル (つまり、アプリ内) に保持することを好みますが、IIS7 の URL 書き換えなど、より優れたパフォーマンスを必要とするプロジェクトもあります。
ASP.NET フォーラムで議論されたので、各コントローラーで WwwFilter を使用することにしました。これは私にとってはうまくいきました。問題はありません。
これをGlobal.asaxに追加してみてください:
if (HttpContext.Current.Request.Url.ToString().ToLower().Contains("http://YourSite.com"))
{
HttpContext.Current.Response.Status = "301 Moved Permanently";
HttpContext.Current.Response.AddHeader("Location", Request.Url.ToString().ToLower().Replace("http://YourSite.com","http://www.YourSite.com"));
}
それは動作し、テストされています。