Несколько лет назад я создал сайт 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.
Как я могу это сделать?