私は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が同じことを実行できるかどうか、それは彼らが行ったことです。私は右のフォーラムにいる願っています:)
はい。ありがとうございました。私はちょうどwww.smarter.asp.comのホストパネルを見て、私がこれをやることができるのです。正式な "www"と終わりのスラッシュにも使えますか? – JustJohn
はい、正規表現のパターンを生成し、正規表現のハートのコンテンツに合わせることができます – LDJ
ありがとうLDJ。私は今週末にそれについて仕事をします。私はこれが良い答えであり、その理由を説明していると思います。 – JustJohn