asp.netのURLが“書き換えられたかどうかを確認するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/259147

  •  06-07-2019
  •  | 
  •  

質問

http://urlrewriter.net/ を使用して、WebサイトのURLを書き換えています。たとえば、私は書き直しています:

  

http://www.example.com/schedule.aspx?state=ca

to

  

http://www.example.com/california.aspx

メタタグを動的に追加するために(SEOの目的で)しようとしていること:

<meta name="robots" content="noindex,follow" />
書き換えられていないページへの

のみ。これは、両方のURLを機能させたいが、書き換えたURLのみを検索エンジンでインデックス化するためです。

どのバージョンのページがリクエストされたかを確認するにはどうすればよいですか

編集

以下の回答は、メタタグを使用する代わりに301リダイレクトを提案しています。たぶん私はこれをするでしょうが、私はまだ根本的な質問への答えを知りたいです...ページが書き直されたかどうかどうやって知るのですか?

役に立ちましたか?

解決

個人的には、書き換えられていないものから書き換えられたものに301リダイレクトし、ページの単一のコピーのみを使用します。ユーザーにとっては簡単であり、SEOの観点からは、コンテンツのコピーが1つあります。

他のヒント

これを行う必要がある場合、おそらく次のようなことができます:

<add header="X-WasRewritten" value="true" />

ビューでヘッダーを確認し、必要に応じてrobotsメタタグを追加できます。

これもクライアントに返されるので、非表示にする場合は、CustomAction( http://urlrewriter.net/index.php/support/reference/actions/custom-action )を使用して、リクエストに何らかの状態値を設定します。

ただし、同じリソースに対して2つのURIを持つことはお勧めしません。 1つの表現のみを保持することをお勧めします。古いブックマークを無効にすることが心配な場合は、新しいブックマークにリダイレクトするように古いブックマークを設定できます。

さらにchakritの答えを見ると、UrlRewriter.NETは元のURLをHttpContextの UrlRewriter.NET.RawUrlと呼ばれるキーに保存しているようです。だから、あなたは次のようなものを試すことができます:

bool isPageRewritten = 
   !string.IsNullOrEmpty(HttpContext.Current.Items["UrlRewriter.NET.RawUrl"]);

最も明白な方法は、ページ内のRequest.Urlオブジェクトを使用して、URLおよびクエリ文字列に関する情報を取得することです。例:

if (Path.GetFileName(Request.Url.FilePath) == "schedule.aspx")
   //Not rewritten
else
   //rewritten

それが HttpContext.Currentの仕事だと思います.Items

&quot;リダイレクト&quot;を保存できますHttpContext.Current.Itemsで、次にページで特定の付加価値を確認できます。

フックをurlrewriter.netに追加して、それを行うことができると信じています:

HttpContext.Current.Items["Redirected_From"] = currentUrlHere;

そして、ウェブページで次の方法で確認できます:

if (!string.IsNullOrEmpty(HttpContext.Current.Items["Redirected_From"]))
    // the page's been redirected, do something!
else
    // no it's visited normally.

.NET 3.5 SP1のASP.NETルーティングフレームワークに残して以来、urlrewriter.net IMOよりも優れています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top