6

私はすべてをグーグルで検索し、さまざまな回答を大量に読みました-いくつかは成功しなかった. 私はプロのプログラマーではありませんが、jquery から doctypes まで、ありとあらゆることを教えてくれたこのフォーラムの人々に感謝しています。

VWD 2010 Express で開発された Web サイトがあります。私は2つのことを知りたいだけです:

  1. 検索エンジン/重複したコンテンツが yourdomain と www.yourdomain の両方を持つのは良くないことを知っているので、301 リダイレクトを設定して、エンドユーザーが mydomain に入力すると、自動的に www.mydomain にリダイレクトされるようにしたいと考えています ( www)。

  2. ルートではなくフォルダにあるいくつかのページを移動しました。そのため、古いページを新しい場所に置き換えたいと考えています。www.mydomain/ services /engineering.aspx から www.mydomain/ products /engineering.aspxに自動的にリダイレクトすることで、これを行いたいと考えています。

これは難しいですか?.htaccess、web.config、またはその他を使用するのは(推奨)ですか?

これをお読みいただきありがとうございます。すべてのフィードバックに心から感謝します。

ジェイソン・ウェバー

4

3 に答える 3

8

私が誤解していない限り、.htacessはApache用であり、ASP.Netでコーディングしている場合は、ほぼ確実にIISを使用しています。だからあなたの研究で.htaccessのものを無視してください。

リダイレクトに何らかのURLリライターを使用することもできますが、それは非常に複雑になる可能性があります。もし私があなたなら、私はそれを可能な限りシンプルに保ち、Page_Loadイベントであなたの古いページ301リダイレクトを行います。

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

正規リダイレクト(wwwからwww以外)の場合、Global.asaxファイルで同様の操作を行って、Application_BeginRequestwww以外のバリアントを検出できます。

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

(これはここから来た私のコードではありません)

これはとにかく私がすることです-それは理解しやすく、時々私が少しブラックボックスを見つける奇妙なウェブサーバー設定の邪魔にならないという利点があります。

于 2012-01-07T20:07:40.230 に答える
6

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

ここで利用可能なその他のドキュメント: http://msdn.microsoft.com/en-us/library/system.web.httpresponse.redirectpermanent.aspx

この関数は Response.Redirect() と同じですが、リダイレクトの実行とともにクライアントに 301 コードを発行します。

于 2012-01-07T20:18:40.270 に答える
-1

301経由でリダイレクトしたい場所でこれを行います

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

次に、Chrome の検査ツールを使用し、[ネットワーク] タブでステータス コードを確認します。わたしにはできる。

于 2017-06-21T09:27:45.603 に答える