0

私はhereからこのコードを取得しました。MVC HTTPからHTTPSへのリダイレクトを永続的に使用し、Dev環境でオフにする方法

注意httpsなしのdevboxでII7.5を使用したいので、ISSExpress 44300ポートにリダイレクトする部分を書き直しました。

public class CustomRequireHttpsFilter : RequireHttpsAttribute 
     { 
     protected override void HandleNonHttpsRequest(AuthorizationContext filterContext) 
      { 
      // The base only redirects GET, but we added HEAD as well. This avoids exceptions for bots crawling using HEAD. 
      // The other requests will throw an exception to ensure the correct verbs are used. 
      // We fall back to the base method as the mvc exceptions are marked as internal. 

      if (!String.Equals(filterContext.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase) 
       && !String.Equals(filterContext.HttpContext.Request.HttpMethod, "HEAD", StringComparison.OrdinalIgnoreCase)) 
       { 
       base.HandleNonHttpsRequest(filterContext); 
       } 

      // Redirect to HTTPS version of page 
      // We updated this to redirect using 301 (permanent) instead of 302 (temporary). 
      string url = "https://" + filterContext.HttpContext.Request.Url.Host + filterContext.HttpContext.Request.RawUrl; 

      //if (string.Equals(filterContext.HttpContext.Request.Url.Host, "localhost", StringComparison.OrdinalIgnoreCase)) 
      // { 
      // // For localhost requests, default to IISExpress https default port (44300) 
      // url = "https://" + filterContext.HttpContext.Request.Url.Host + ":44300" + filterContext.HttpContext.Request.RawUrl; 
      // } 

      filterContext.Result = new RedirectResult(url, true); 
      } 
     } 

次に、私のFilterDonfig.csにこれを追加しました。 Web.configがProductionで持っているものである "Debug = false"を持っている場合、それは上記のオーバーライドを使用するだけです。開発環境でリリースを実行する必要はありません。また、SSLを処理するようにローカルIISを構成する必要もありません。私は "RequireHttpsAttribute()"を書き直し、上記の新しいものを使用しました。

public class FilterConfig 
{ 
    public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new HandleErrorAttribute()); 

     if (!HttpContext.Current.IsDebuggingEnabled) 
      { 
      /////filters.Add(new RequireHttpsAttribute()); 
      filters.Add(new CustomRequireHttpsFilter()); 
      } 
    } 
} 

私は正しいことをしていますか?検索のボットは1つのウェブサイトを追跡するだけなので、SEOが最適化されていることを確認するにはどうすればいいですか?私の理解では、 "http"と "https"は検索エンジンによって2つの別々のウェブサイトとみなされます。私は正しい場所でこれをやっていますか?私がどんなコードを取得しているのかは分かりません。

===============

私は永久的なリダイレクトを行う方法についての私のISPを求め、このソリューションを提案し、彼らは言った:

お客様各位、我々は リダイレクトは設定されませんでした。しかし、問題を解決するためにIISのhttpsバインド設定を修正しました。

IISが同じことを実行できるかどうか、それは彼らが行ったことです。私は右のフォーラムにいる願っています:)

答えて

1

どうURL rewrite moduleを使用してIISレベルでこれを行うことについて:http://forums.iis.net/t/1153050.aspx?URL+Rewrite+for+SSL+redirection

をDEVでそれをオフにするには、ちょうどあなたのdevのウェブにfalseに有効なルールを設定します.config。ただし、HTTPSが設定されているすべてのサーバー/環境で有効にします。

これまで私はこれを使ってきましたが、実際にはうまく機能しました。アプリに関連しないコードでアプリを乱雑にするのを防ぎます。

+0

はい。ありがとうございました。私はちょうどwww.smarter.asp.comのホストパネルを見て、私がこれをやることができるのです。正式な "www"と終わりのスラッシュにも使えますか? – JustJohn

+0

はい、正規表現のパターンを生成し、正規表現のハートのコンテンツに合わせることができます – LDJ

+0

ありがとうLDJ。私は今週末にそれについて仕事をします。私はこれが良い答えであり、その理由を説明していると思います。 – JustJohn

関連する問題