Как мне определить, был ли "переписан" URL-адрес asp.net?

StackOverflow https://stackoverflow.com/questions/259147

  •  06-07-2019
  •  | 
  •  

Вопрос

Я использую http://urlrewriter.net/ переписать URL-адреса на моем веб-сайте.Например, я переписываю:

http://www.example.com/schedule.aspx?state=ca

Для

http://www.example.com/california.aspx

Что я пытаюсь сделать (для целей SEO), чтобы динамически добавлять мета-тег:

<meta name="robots" content="noindex,follow" />

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

Как мне определить, какая версия страницы была запрошена?

Редактировать

Приведенные ниже ответы предполагают перенаправление 301 вместо использования мета-тега.Возможно, я сделаю это, но я все еще хочу знать ответ на основной вопрос...как мне узнать, была ли страница переписана?

Это было полезно?

Решение

лично я бы сделал 301 перенаправление с непереписанной страницы на переписанную и использовал бы только единственную копию страницы.Это проще для пользователей, и с точки зрения SEO у вас есть 1 копия контента.

Другие советы

Если вам нужно это сделать, вы, вероятно, можете сделать что-то вроде:

<add header="X-WasRewritten" value="true" />

И вы можете проверить наличие заголовка в вашем представлении и добавить мета-тег robots, если вам это нужно.

Это тоже будет возвращено клиенту, так что если вы хотите скрыть это, вы можете написать CustomAction (http://urlrewriter.net/index.php/support/reference/actions/custom-action), который установит какое-то значение состояния в вашем запросе.

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

В дополнение к ответу чакрита, он выглядит как UrlRewriter .NET сохраняет исходный URL-адрес в HttpContext в ключе, называемом UrlRewriter.Нет.RawUrl.Итак, вы могли бы попробовать что-то вроде:

bool isPageRewritten = 
   !string.IsNullOrEmpty(HttpContext.Current.Items["UrlRewriter.NET.RawUrl"]);

Наиболее очевидный метод - использовать запрос.Объект URL на вашей странице для получения информации об URL и строке запроса.Например:

if (Path.GetFileName(Request.Url.FilePath) == "schedule.aspx")
   //Not rewritten
else
   //rewritten

Я думаю, что это работа HttpContext.Текущий.Товары.

Вы можете сохранить "Перенаправление" в HttpContext.Current.Элементы, а затем на своих страницах вы можете проверить его на наличие определенной дополнительной ценности.

Я верю, что вы можете добавить хуки к urlrewriter.net это могло бы сделать это, что-то еще:

HttpContext.Current.Items["Redirected_From"] = currentUrlHere;

И затем на своих веб-страницах вы могли бы проверить это с помощью:

if (!string.IsNullOrEmpty(HttpContext.Current.Items["Redirected_From"]))
    // the page's been redirected, do something!
else
    // no it's visited normally.

Я давно оставил это для ASP.NET Routing framework в .NET 3.5 SP1, это лучше, чем urlrewriter.net IMO.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top