У меня есть приложение MVC3, написанное на C#, для которого я хотел бы сгенерировать теги rel=canonical. В поисках SO способов добиться этого автоматически я наткнулся на этот пост.
Я реализовал его в своей среде разработки, и он работает по назначению и генерирует такие теги, как
<link href="http://localhost/" rel="canonical" />
.
Мой вопрос: что хорошего в этом? Разве канонический URL-адрес не должен явно указывать на то, куда я хочу (т.е. на мой рабочий сайт), а не на какой-либо URL-адрес?
Причина, по которой я говорю об этом, заключается в том, что мой хостинг-провайдер (который пока не будет называться) также генерирует другой URL-адрес, который указывает на мой сайт (тот же IP-адрес, просто другое имя хоста, я понятия не имею, почему, они утверждают, что это для целей обратного DNS -- это другая тема). Однако я начал видеть, что моя страница появляется в результатах поиска Google по этому зеркальному URL-адресу. Не годится для SEO, так как это «дублированный контент». Теперь я исправил это, просто настроив свой сайт IIS так, чтобы он отвечал только на запросы к домену моего сайта, однако, похоже, пришло время посмотреть, какое решение могли бы предоставить канонические URL-адреса.
Используя решение в посте выше, тег ссылки rel=canonical выводит канонический URL-адрес, содержащий ЗЕРКАЛЬНЫЙ URL-адрес, если кто-то зайдет на зеркальный сайт, а это совсем не то, что мне бы хотелось. Это ВСЕГДА должно быть <link rel="canonical" href="http://www.productionsite.com" />
, независимо от URL-адреса в адресной строке, верно? Я имею в виду, разве не в этом смысл канонических URL-адресов или я что-то упускаю?
Предполагая, что я прав, существует ли общепринятый общий способ создания канонических URL-адресов для приложения MVC3? Очевидно, я могу определить их индивидуально для каждой страницы или просто заменить параметр rawUrl.Host
в решении, которое я связал, на жестко закодированное доменное имя. Мне просто интересно, почему я вижу так много примеров, когда люди создают канонические URL-адреса таким образом, когда это не соответствует цели (по крайней мере, в моем примере). Какую проблему они пытаются решить, просто вставляя текущий URL-адрес в элемент ссылки rel=canonical?