Я несколько лет назад создал сайт ASP.NET, управляемый базой данных, который использует одну страницу APSX для отображения всех страниц сайта. Таким образом, все URL-адреса сайта имеют следующий формат:
/main.aspx?page=Page+Title+One
/main.aspx?page=Another+Article+Title
/main.aspx?page=Third+Page
Страница main.aspx получает данные строки запроса (например, Page + Название + Один) и использует их в качестве ключа для извлечения соответствующего содержимого статьи из базы данных сервера SQL. Фактический заголовок страницы хранится в БД с пробелами вместо плюсов (например, «Page Title One»).
Плохое решение использовать знак + в качестве разделителя слов в строке запроса 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.
Как я могу это сделать?