301 Перенаправить исходный запрос URL на перенаправленный URL - PullRequest
1 голос
/ 02 апреля 2012

Я использую следующий код в моем Global.asax файле для перезаписи URL:

routes.MapRoute(
               "BlogArticle",
               "Blog/Article/{filename}",
               new { controller = "Blog", action = "Article" }
               );

Это означает следующий URL:

/ Blog / Article /blog-article-title

Загрузит следующее действие:

/ Blog / Article? filename = blog-article-title

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

Это может вызвать проблемы, если перезапись URL была добавлена ​​на сайт через несколько месяцев после того, как сайт начал работать.Google уже просканировал исходные URL-адреса, а теперь, когда он сканирует новые URL-адреса на сайте, он будет классифицировать это как дублирующийся контент .

Я представлял, что исходный URL-адрес теперь будет автоматическисделать перенаправление на переписанный URL, но это не так.

Я думаю, что имеет смысл встроить что-то подобное в ядро ​​ASP.NET MVC, поскольку я не вижуПреимущество в том, что исходный URL все еще доступен, а не перенаправлен на перезаписанный URL.Есть ли какая-то причина, по которой это не было сделано?

Кроме того, как я могу предотвратить загрузку содержимого с исходного URL?Есть ли способ, которым я могу получить его на 301 постоянное перенаправление на переписанный URL?

1 Ответ

1 голос
/ 02 апреля 2012
routes.MapRoute(
               "BlogArticle",
               "Blog/Article/{filename}",
               new { controller = "Blog", action = "Article" }
               );

попробуйте это для более чистого URL, а затем запросите имя файла в качестве параметра в вашем действии

routes.MapRoute(
           "BlogArticle",
           "Blog/Article/{filename}",
           new { controller = "Blog", action = "Article", filename = UrlParameter.Optional}
           );
...