Знак плюс в строке запроса для сайта ASP.NET

Несколько лет назад я создал сайт ASP.NET, управляемый базой данных, который использует одну страницу APSX для отображения всех страниц сайта. Поэтому все URL-адреса сайта имеют следующий формат:

/main.aspx?page=Page+Title+One

/main.aspx?page=Another+Article+Title

/main.aspx?page=Third+Page

Страница main.aspx получает данные строки запроса (например, Page+Title+One) и использует их в качестве ключа для извлечения соответствующего содержимого статьи из базы данных SQL-сервера. Фактический заголовок страницы хранится в базе данных с пробелами вместо плюсов (например, "Заголовок страницы один").

Неудачное решение использовать знак + в качестве разделителя слов в строке запроса URL в последнее время вызывает множество проблем у поисковых систем (дублированный контент и т.д.), поэтому я хочу исправить это, но без изменения URL.

Что я хочу сделать, это когда поисковая система или посетитель пытается посетить неправильный URL, пропуская знаки + и имея вместо них белые пробелы, например:

/main.aspx?page=Page Title One

Я хочу сделать 301 постоянный редирект на:

/main.aspx?page=Page+Title+One

Чтобы иметь возможность сделать это, мне нужно проверить, имеет ли значение строки запроса плюсы или белые пробелы, однако когда я получаю значение с помощью Request.QueryString["page"], даже если фактическая строка запроса имеет плюсы в ней, я все равно получаю строку с белыми пробелами "Page Title One".

Сайт работает на IIS6/Win 2003.

Как я могу это сделать?

11
задан dgvid 21 December 2011 в 20:53
поделиться