Asp.Net MVC маршрутизация: лучший способ иметь один элемент в URL? - PullRequest
1 голос
/ 10 декабря 2008

Я возьму пример с сайта SO. Чтобы перейти к списку вопросов, URL-адрес www.stackoverflow.com/questions. За сценой это идет к контроллеру (имя которого неизвестно) и к одному из его действий. Допустим, это контроллер = дом и действие = вопросы .

Как запретить пользователю вводить www.stackoverflow.com/home/questions, который приведет к той же странице и снизит рейтинг страницы до SEO обеспокоен. Требуется ли перенаправление, чтобы решить это? Требуются ли какие-то особые правила маршрутизации, чтобы справиться с такой ситуацией? Что-то еще?

Спасибо

Ответы [ 3 ]

1 голос
/ 10 декабря 2008

Во время презентации Фила Хаака из PDC Джефф показывает часть исходного кода переполнения стека. Среди вещей, которые он показывает, есть код для некоторых регистраций маршрута. У него они есть в контроллерах, и мне не ясно, что он вообще использует маршрут по умолчанию. Например, при отсутствии маршрута по умолчанию вам не нужно беспокоиться о / home / questions.

Что касается / questions / index, то да, постоянный редирект - это путь. Вы не получите никакого штрафа в поисковой системе за постоянное перенаправление.

Другим способом устранения / home / вопросов было бы использование ограничения маршрута.

1 голос
/ 10 декабря 2008

Вы хотите использовать следующий маршрут. Это действительно легко, вы просто создаете новый маршрут, который устраняет необходимость присутствия контроллера в маршруте. Вы создаете шаблонную строку, которая просто содержит действие, и вы устанавливаете контроллер по умолчанию на контроллер, который вы хотите использовать, например «Домой».

routes.MapRoute(
    "MyRoute",
    "{action}",
    new { controller = "Home", action = (string)null },
    new { action = "[a-zA-z_]+" }
);

Надеюсь, это поможет.

1 голос
/ 10 декабря 2008

Я предположил, что контроллером было questions, а действием было index, то есть действием по умолчанию, определенным обработчиком маршрута. Таким образом, нет альтернативного пути к странице.

...