Несколько лет назад я создал сайт ASP.NET с базами данных, который использует одну страницу APSX для отображения всех страниц сайта. Таким образом, все URL-адреса сайта находятся в следующем формате:
/main.aspx?page=Page+Title+One
/main.aspx?page=Another+Article+Title
/main.aspx?page=Third+Page
Страница main.aspx получает данные строки запроса (Страница + Заголовок + Один) и использует ее как ключ для вытягивания соответствующего содержимого статьи из базы данных SQL-сервера. Фактическое название страницы хранится в db с пробелами вместо плюсов (например, "Название одной страницы" ).
Плохое решение пойти со знаком + в качестве разделителя слов в строке запроса URL вызывает множество проблем с поисковыми системами в последнее время (дублирование контента и т.д.), поэтому я хочу исправить его, но без изменения URL-адресов.
То, что я хочу сделать, - это когда поисковая система или посетитель пытается посетить неверный URL-адрес, у которого отсутствуют значки + и вместо них есть пробелы, например:
/main.aspx?page=Page Title One
Я хочу сделать 301 постоянную переадресацию на:
/main.aspx?page=Page+Title+One
Чтобы это сделать, мне нужно проверить, имеет ли значение строки запроса плюсы или пробелы, однако, когда я получаю значение с помощью Request.QueryString [ "page" ], даже если в реальной строке quesry есть плюсы в ней. все равно получите строку с пробелами "Страница Title One".
Сайт работает на IIS6/Win 2003.
Как я могу это сделать?