asp.netのURLが“書き換えられたかどうかを確認するにはどうすればよいですか?
-
06-07-2019 - |
質問
http://urlrewriter.net/ を使用して、WebサイトのURLを書き換えています。たとえば、私は書き直しています:
to
メタタグを動的に追加するために(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よりも優れています。