6

私はあらゆることを捜してきましたが、私はさまざまな回答を読んだことがあります。私はプロのプログラマーではありませんが、jqueryからdoctypesまで、すべてのことについて教えてくれたこのフォーラムのメンバーに感謝します。asp.netで301リダイレクトするのに推奨される方法は何ですか?

私はVWD 2010 Expressで開発されたウェブサイトを持っています。私はちょうど2つのことを知りたい:

  1. エンドユーザーならば、私はそれが検索エンジン/ YOURDOMAINたのは重複コンテンツとwww.yourdomainの両方のために悪いことを知っているので、私はそのよう301リダイレクトを設定したいですmydomainの型は、自動的にwww.mydomain(wwwを含む)にリダイレクトされます。

  2. 私は、ルートにはなくフォルダにあるページを移動しました。だから古いページを新しい場所に置き換えたい。 www.mydomain/サービス /engineering.aspxからwww.mydomain/の製品 /engineering.aspxから自動的にリダイレクトすることでこれを行いたいと思います。

これは難しいですか? .htaccess、web.configなどを使用する場合は(推奨)ですか?

この度は読んでいただきありがとうございます。私は何かすべてのフィードバックに心から感謝しています。

ジェイソン・ウェーバー

答えて

7

私が誤解してきた場合を除き.htacessは、Apacheのためであり、あなたはASP.Netでコーディングしている場合は、ほぼ確実にIISを使用しています。あなたの研究では、.htaccessのことをigonore。

リダイレクトにはある種のURLリライタを使用できますが、それは非常に複雑になる可能性があります。私はあなただったら、私はあなたがGlobal.asaxの中に似て行うことができ、あなたの標準的なリダイレクト(WWWへの非WWW)について

protected void Page_Load(object sender, System.EventArgs e) 
{ 
    Response.Status = "301 Moved Permanently"; 
    Response.AddHeader("Location","http://www.domainname.com/new-page.aspx"); 
} 

すなわち、Page_Loadイベントに301のリダイレクトをできるだけ簡単にそれを維持し、古いページを行うだろう

if (HttpContext.Current.Request.Url.ToString().ToLower().Contains( 
    "http://mysite.com")) 
{ 
    HttpContext.Current.Response.Status = "301 Moved Permanently"; 
    HttpContext.Current.Response.AddHeader("Location", 
     Request.Url.ToString().ToLower().Replace( 
      "http://mysite.com", 
      "http://www.mysite.com")); 
} 

すなわち、非WWWのバリアントを検出するためApplication_BeginRequest内のファイル(これはそれがhereから来た私のコードではありません)

これは、私はとにかく何をするのかである - それは理解しやすいという利点を持っていますあなたをどのようにも邪魔しないように私は時々ブラックボックスのビットを見つける奇妙なWebサーバーの設定。

+0

優秀な情報、カニ - 大いに感謝します! .htaccess/apacheのものを認識できないので、私はかなり愚かな気がする。私はWindowsサーバーだからだ。情報とリンクは優れています - 私の状況のた​​めの完全なアドバイス。これらのリダイレクトは実装するのが難しくありません。あなたの時間をもう一度ありがとう! –

+0

@JasonWeber全く問題ありません。幸運それすべてで –

6

VWD 2010 Expressを使用しているため、Response.RedirectPermanent(stringURL)という.NET4メソッドを使用すると便利です。これはHttpResponseオブジェクトの一部です。ここで使用可能

詳細資料:Response.Redirectを通りであった同じ http://msdn.microsoft.com/en-us/library/system.web.httpresponse.redirectpermanent.aspx

この関数は、()しかし、リダイレクトを行うと共に、クライアント301のコードを発行します。

+0

それは完璧で簡単だった - 返信とリンク、カイルに感謝トン! –

+0

そして、はい、私は.net4.0フレームワーク上にいるので、これは完璧な解決策でした。 –

-1

あなたがChromeから検査ツールを使用すると、ステータスコードを見て、「ネットワーク」タブをチェックし

301を超える
string url = "newpage.aspx"; 
     Response.Clear(); 
     Response.StatusCode = 301; 
     Response.RedirectLocation = url.ToLower(); 
     Response.End(); 

をリダイレクトする場所これを行います。 それは私のために働く。

関連する問題