私は数年前、単一の APSX ページを使用してすべてのサイト ページを表示するデータベース駆動の ASP.NET サイトを作成しました。したがって、サイトのすべての URL は次の形式になります。
/main.aspx?page=Page+Title+One
/main.aspx?page=Another+Article+Title
/main.aspx?page=Third+Page
main.aspx ページは、クエリ文字列データ (Page+Title+One など) を取得し、それをキーとして使用して、SQL サーバー データベースから適切な記事コンテンツを取得します。ページの実際のタイトルは、プラスの代わりにスペースを使用してデータベースに保存されます (たとえば、「ページ タイトル 1」)。
URL クエリ文字列の単語区切りとして + 記号を使用するという不適切な決定は、最近検索エンジンで多くの問題 (コンテンツの重複など) を引き起こしているため、URL を変更せずに修正したいと考えています。
私がやりたいことは、検索エンジンまたは訪問者が間違った URL にアクセスしようとしたときに + 記号がなく、代わりに空白が含まれている場合です。たとえば、次のようになります。
/main.aspx?page=Page Title One
301パーマネントリダイレクトを行いたい:
/main.aspx?page=Page+Title+One
これを行うには、クエリ文字列の値にプラスまたは空白が含まれているかどうかを確認する必要がありますが、Request.QueryString["page"] で値を取得すると、実際のクエリ文字列にプラスが含まれていても文字列が取得されます空白の「ページ タイトル 1」。
このサイトは IIS6/Win 2003 で動作します。
これどうやってするの?