4

.NET MVC に組み込みのフレンドリなルーティング ライブラリを使用すると、このようなことができるようになります。

.NET MVC に組み込まれているもので何をしたいのか明らかでない場合は、MVC フレームワークを使用して、www で始まる URL を非 www の URL に自動的にリダイレクトする必要があります。

4

3 に答える 3

8

IIS7URL書き換えモジュールを使用できます

web.configIISからセットアップするか、次の場所に配置することができます<system.webServer>

wwwから非www

<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が言ったことを思い出してください。詳細については、こちらをご覧ください


非wwwからwww

<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し、一致するグループを取得するために使用します。

于 2011-01-29T14:42:47.163 に答える
2

www から not-www への 301 リダイレクトを行う方法はいくつかあります。一部のプロジェクトでは、このリダイレクト ロジックを ASP.NET レベル (つまり、アプリ内) に保持することを好みますが、IIS7 の URL 書き換えなど、より優れたパフォーマンスを必要とするプロジェクトもあります。

ASP.NET フォーラムで議論されたので、各コントローラーで WwwFilter を使用することにしました。これは私にとってはうまくいきました。問題はありません。

于 2008-11-16T07:52:12.303 に答える
0

これを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"));
    }

それは動作し、テストされています。

于 2011-05-02T13:50:55.270 に答える