Я использую asp.net 4, c # и Routing для своего веб-сайта.
Мой результат маршрута как
A) http://mysite.com/article/58/mytitle (result my article all is fine)
58
и mytitle
представляют в столбце Id
и Title
в базе данных для моей таблицы Articles
.
Я замечаю, что ... если я прошу:
http://mysite.com/article/2000000000/mytitle (a not existing ID)
Я получаю страницу ошибки .
Если вместо этого я попытаюсь:
B) http://mysite.com/article/58/mytitttttttle (title misspelled)
Я все еще получаю свою страницу http://mysite.com/article/58/mytitle
Мне нужно, чтобы мой веб-сайт перенаправлялся на страницу 404, если ни ID, ни TITLE не представляют записи в моем источнике данных.
PS: я заметил, что веб-сайт SO ведет себя аналогично, за исключением того, что он может перенаправлять на страницу 404, если идентификатор вопроса не совпадает.
Мои вопросы:
- это нормальное поведение?
- как перенаправить на 404 страницы вместо?
- , если невозможно использовать 404 страницы, можно использовать канонические ссылки ?
Я спросил, потому что я рассматриваю этот сценарий, давайте представим, что сайт неправильно ссылается на мой сайт, например
http://mysite.com/article/58/mytitttttttle (title misspelled)
или
http://mysite.com/article/58/mytitttttttle2222 (title misspelled)
оба будут индексировать мою поисковую систему, что приведет к дублированию контента (и это не хорошо).
Пожалуйста, предоставьте мне пример кода, если это возможно. Спасибо за ваш комментарий, спасибо!