Kilka lat temu utworzyłem witrynę ASP.NET opartą na bazie danych, która wykorzystuje jedną stronę APSX do wyświetlania wszystkich stron witryny. Więc wszystkie adresy URL witryny znajdują się w następującym formacie:Znak plusa w ciągu zapytania dla strony ASP.NET
/main.aspx?page=Page+Title+One
/main.aspx?page=Another+Article+Title
/main.aspx?page=Third+Page
Strona main.aspx pobiera dane ciąg kwerendy (strona + Tytuł + Jeden na przykład) i używa go jako klucza do ciągnięcia odpowiedniego artykułu zawartość z bazy danych serwera SQL. Rzeczywisty tytuł strony jest przechowywany w bazie danych za pomocą spacji zamiast plusów (na przykład "Tytuł strony pierwszej").
Zła decyzja, aby przejść ze znakiem + jako separatorem wyrazów w ciągu zapytania adresu URL powoduje ostatnio wiele problemów z wyszukiwarkami (duplikowanie treści itp.), Więc chcę to naprawić, ale bez zmiany adresów URL .
Co chcę zrobić, to kiedy wyszukiwarka lub użytkownik próbuje odwiedzić niewłaściwy adres brakuje + znaki i posiadające spacji zamiast, na przykład:
/main.aspx?page=Page Title One
chcę zrobić 301 trwałe przekierowanie do:
/main.aspx?page=Page+Title+One
aby móc to muszę sprawdzić, czy ciąg znaków zapytania ma plusy lub spacji, jednak gdy pojawia się wartość z Request.QueryString [ „strony”] zrobić nawet jeśli ciąg ma rzeczywisty quesry plusy w nim Ciągle otrzymuję ciąg z białymi spacjami "Tytuł strony pierwszej".
Witryna działa na IIS6/Win 2003
Jak mogę to zrobić?
Moje adresy URL zawsze używały znaku plus zamiast białych spacji lub% 20, jednak widzę strony z pamięci podręcznej w Google wyglądające jak te 2: /main.aspx?page=KW1 KW2 i /main.aspx?page=KW1% 20KW2, które są błędne i powodują problemy z duplikatami treści. Teraz chcę je 301 na właściwy URL, który jest/main.aspx?page=KW1+KW2. –
To właśnie wyjaśniałem. Nie wiem, co było niejasne, więc dodajmy przykład kodu, który, mam nadzieję, wyjaśnia. –
Dzięki Jon, to jest dokładnie to, czego potrzebowałem :). Jak oznaczyć pytanie jako udzielone? –