Какую пользу приносит создание канонического URL-адреса на основе текущего URL-адреса?

У меня есть приложение 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?


person Scott    schedule 07.04.2012    source источник
comment
Использование текущего URL действительно мало что дает. Более типичное использование — это когда немного разные URL-адреса (авторитет или путь) указывают на одну и ту же страницу, и каноническим для всех из них должен быть один предпочтительный/авторитетный URL-адрес.   -  person Marc Gravell    schedule 07.04.2012


Ответы (3)


Отличный вопрос, и вы в восторге от того, что зеркальный сайт по-прежнему помечается как канонический. На самом деле, вам нужно решить пару проблем, прежде чем они еще сильнее ударят по вашему «ссылочному весу».

Я подозреваю, что основная причина в том, что MVC по своей сути является системой перезаписи/маршрутизации URL-адресов. Таким образом, в зависимости от сообщения, которое происходит с первоначально запрошенным URL-адресом, люди пытаются установить каноническую ссылку в «установленном» формате конечного URL-адреса после перезаписи. Тем не менее, я думаю, что вы столкнулись с оплошностью, с которой сталкивается большинство людей, а именно: «А как насчет URL-адресов, которые достигли страницы, которые НЕ были ожидаемы и ПЕРЕЗАПИСАНЫ, чтобы стать действительным, каноническим путем к URL-адресу?» Ответ здесь заключается в том, чтобы переписать эти «плохие запросы» по мере их обнаружения. Например: если вы переписали запросы зеркального домена вашего интернет-провайдера, то к тому времени, когда он достигнет загруженной страницы, это СЕЙЧАС действительный URL-адрес; Это потому, что это было "исправлено" вашими правилами перезаписи. Есть смысл? Поэтому вам нужно будет обновить маршруты MVC, чтобы обработать неверный маршрут, созданный вашим интернет-провайдером. ПРИМЕЧАНИЕ. Вы ДОЛЖНЫ убедиться, что используете не исходный запрошенный URL, а окончательный, переписанный, при создании значения канонической ссылки.

Продолжите мой совет по WWW и не WWW, а также беспокойство по поводу того, что вы упомянули о том, что не обрабатываете недействительные URL-адреса.

Люди делают это еще и потому, что ваш сайт уже «отзеркаливает» другой домен, о котором люди всегда забывают. Поддомен "WWW".

Хотите верьте, хотите нет, но многие утверждают, что наличие www.yourdomain.com/mypage.htm и yourdomain.com/mypage.htm на самом деле ухудшает рейтинг вашей страницы из-за «дублированного» контента. Я подозреваю, что именно поэтому люди показывают там «тот же домен», потому что на самом деле это домен, лишенный «WWW». (Я использую правило перезаписи, чтобы согласовать www и no-www.)

Кроме того, будьте осторожны с «настройкой моего сайта IIS для ответа только на запросы к домену моего сайта», потому что, если Google все еще видит там ссылки и считает их частью вашего сайта, он может на самом деле просто наказать вас за то, что страницы не загружаются ( т.е. 404s) Я рекомендую иметь правило перезаписи, которое отправляет их на ваш «настоящий» домен ИЛИ, по крайней мере, по крайней мере настроить каноническую ссылку, чтобы использовать только ваш «настоящий» домен с WWW постоянно там, или нет там. (Спорят, что лучше, я не думаю, что это имеет значение, если вы последовательны.)

person Dylan - INNO Software    schedule 08.04.2012
comment
Скотт, еще одна мысль, которая пришла мне в голову. Я должен был уточнить, что правила перезаписи в значительной степени уместны, но, вероятно, это лучше всего обрабатывать как комбинацию постоянного перенаправления (работа с недействительными доменами) И перезаписи (работа с WWW против не-WWW и т. д.) для достижения окончательный идеальный URL-адрес, который вы программно устанавливаете как правильный, канонический. Поисковые системы не будут наказывать вас за перенаправление, особенно если оно, наконец, достигает страницы, которая в конце предоставляет один действительный канонический URL-адрес. - person Dylan - INNO Software; 08.04.2012

Какую проблему они пытаются решить, просто вставляя текущий URL-адрес в элемент ссылки rel=canonical?

Нет! Они только усугубляют ситуацию! Их просто ввели в заблуждение

На этот вопрос есть вводящие в заблуждение ответы, здесь также о переполнении стека, которые были приняты и проголосованы!!

Вся концепция заключается в создании уникального идентификатора ссылки для каждой страницы с разным содержанием в каноническом теге.

Так что хороший способ создания уникальных ссылок для ваших канонических тегов основан на.

Имя контроллера , Имя действия и Язык. Эти 3 варианта будут предоставлять разное содержимое.

Домен , Протокол и Регистр букв не использовать!

Смотрите вопрос и мой ответ здесь для лучшего понимания.

Автоматическое создание MVC rel="canonical"

person Anestis Kivranoglou    schedule 15.12.2016

Создание канонического URL-адреса на основе текущего URL-адреса НЕ приносит никакой пользы. Вы должны создать канонический URL-адрес на основе чего-то статического, например информации из базы данных. Например, если ваш URL-адрес включает, скажем, название книги. Вы должны извлечь это название книги из базы данных и создать канонический URL-адрес из ЭТОГО, а НЕ из URL-адреса текущей страницы. Таким образом, если часть URL-адреса отсутствует И страница все еще отображается, канонический URL-адрес всегда будет одним и тем же.

person Mark Pringle    schedule 22.10.2015