default.aspxをURLから非表示にする
-
06-07-2019 - |
質問
URLのdefault.aspxテキストを削除するアプリケーションにIIS6を使用するソリューションがあるかどうかを知りたかった。たとえば、ユーザーがヒットした場合:
www.website.com/default.aspx
ブラウザに表示されるのは:
www.website.com /
何があっても。 SEO専用です。
すでにアプリの一部の書き換えにUrlRewriting.NETを使用していますが、そのためのルールを作成するのはそれほど賢くありません。
ご協力ありがとうございます。
ありがとう。 ホセ
解決
URLの書き換えが必要な場合は、リンクが正しいURLを指すようにする必要があります。
リンクを修正しない場合、リクエストした実際のリンクを表示するかどうかはブラウザ次第です。
本当に危険な仕事をしたい場合は、javascriptを使用して、ブラウザのアドレスバーに無効な場合でも好きなものを表示させることができます。
他のヒント
ScottGuには既にASP.NETでの書き換えのトピックが含まれていると思います: http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net。 aspx 。
彼は次のようなものを扱っています:
- UrlRewriter.netを使用した書き換え、ISAPI書き換え
- ASP.NETのトリック、ポストバック(URLのわかりやすいバージョンをヒット)
あなたの問題については、「default.aspx」にリンクすることのない組み合わせを使用する必要があると思います。 「/」へのリンクのみ。次に、スコットのフォームポストバックブラウザーファイルを使用して、ポストバックが常に同じURLの同じバージョンにヒットするようにします。
「default.aspx」を「/」にリダイレクトすると、「default.aspx」によって処理され、災害のレシピのように聞こえます。リンクを修正して、 'default.aspx'を明示的に終了しないようにしてください。
検索結果のインデックスを変更する最も簡単な方法は(HTTP 301を知っていると仮定して)、301 Moved Permanently(または302 Moved Temporarily)を使用してブラウザをリダイレクトする小さな関数をdefault.aspxのPage_Loadに記述することだと思います。
void Page_Load(...) {
if(Request.Path.EndsWith("default.aspx", true/*case-insensitive*/, null)) {
Response.StatusCode = 301;
Response.StatusDescription = "Moved Permanently";
Response.Headers.Add("Location", "/");
HttpContext.Current.ApplicationInstance.CompleteRequest(); // end the request
}
// do normal stuff here
}
default.aspxがIISで提供するデフォルトのドキュメントとして設定されており、すべての内部サイトリンクにdefault.aspxのないURLが含まれている場合は、それでうまくいくと思います。
ユーザーは引き続き default.aspx を入力できますが、検索エンジンのスパイダーはリンクhref属性から友好的なURLを選択するだけです。
それを行う方法は、パブリッククラスGlobal:System.Web.HttpApplicationでApplication_BeginRequestを使用し、default.aspxのHttpContext.Current.Request.URLを確認してから、そこからHttpContext.Current.Response.Redirectを使用することです。見つかったら。
欠点は、リダイレクトが常に素晴らしいとは限らないことであり、そのdefault.aspxページにデータを投稿する場合、これは機能しません。ただし、ブラウザを単にだまして別のURLを表示することはできませんが、ASP.NETに、リクエストに必要なページを提供するように指示することはできます。