Должны ли пути URL быть чувствительными к регистру?

11

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

  • http://example.com/about
  • http://example.com/About

Однако, взглянув на сайт wordpress.org, я заметил, что URL-адреса чувствительны к регистру. Например, вторая ссылка ниже - это страница ошибки 404:

  • http://wordpress.org/about
  • http://wordpress.org/About

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

Обновить

Похоже, что Google использует политику URL с учетом регистра для своих собственных URL. Например, вторая ссылка ниже - 404:

  • http://google.com/doodles
  • http://google.com/Doodles

Обновление 2

Спасибо за ваши ответы. Я решил воспользоваться советом, упомянутым в принятом ответе, и, при необходимости, выполнить 301 переадресацию. Поскольку я работаю с WordPress, мое решение для кода выглядит следующим образом (на случай, если кому-то будет интересно):

function force_lowercase_urls() {

    if ( is_admin() )
        return;

    if ( preg_match( '/[A-Z]/', $_SERVER['REQUEST_URI'] ) ) {

        wp_redirect( strtolower( $_SERVER['REQUEST_URI'] ), 301 );
        exit();
    }

}
add_action( 'init', 'force_lowercase_urls' );
henrywright
источник
1
But wouldn't that result in duplicate content? – henrywrightВам никогда не нужно беспокоиться о дублирующих ссылках, если ваш сайт правильно использует канонические ссылки, и вы можете получить доступ к одной странице миллионами способов, и никогда не будете подвержены влиянию дублирующегося контента.
Саймон Хейтер
@bybe Если у вас есть доступ к одной странице миллионами способов, робот Googlebot не сможет хорошо сканировать ваш сайт. Доступ к странице несколькими способами вряд ли повредит.
Стивен Остермиллер

Ответы:

6

Две из наиболее широко используемых файловых систем операционной системы для обслуживания веб-контента имеют очень разные настройки чувствительности к регистру URL-адресов по умолчанию. Независимо от того, чувствительны ли ваши URL-адреса, зависит от того, какую функцию вы используете:

  • Microsoft IIS, работающий в Windows - URL-адреса без учета регистра - показывает одно и то же содержимое независимо от заглавных букв.
  • Сервер Apache HTTPD, работающий в Linux - чувствительные к регистру URL - выдает ошибку 404 not found из-за неправильной прописной буквы.

На мой взгляд, ни один из дефолтов не идеален:

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

Идеальным решением было бы показывать страницу только тогда, когда URL правильно написан заглавными буквами. Для неправильного использования заглавных букв пользователь должен быть перенаправлен на 301 предпочтительную заглавную букву. Есть несколько способов, которыми это может быть достигнуто:

Стивен Остермиллер
источник
1
Я чувствую, что это артефакт DOS и Windows, отличающийся от предыдущего стандарта чувствительности к регистру, который мы имеем в средах Unix.
Вс
1
Будь Apache чувствителен к регистру для запросов, которые отображаются на файловую систему, зависит от базовой файловой системы, а не от самого Apache. Если Apache работает в Windows, то запрашивает /iNdEx.HtMlили /InDeX.hTmlвозвратит оба /index.html(при условии, что /index.htmlэто физический файл в файловой системе).
MrWhite
1
На самом деле, это похоже на то же самое для IIS .
MrWhite
1
Ну, IIS всегда работает в Windows (AFAIK), поэтому запросы файловой системы всегда будут без учета регистра. Тем не менее, многие сайты будут перенаправлять (переписывать) URL-адреса через некоторый фронт-контроллер - в этом случае запрос, вероятно, не сопоставляется с физическим файлом в файловой системе, и поэтому URL-адрес, вероятно, чувствителен к регистру (если приложение специально не делает это так) - нечувствителен) - который в основном совпадает с Apache (при работе в Windows). (?)
MrWhite
2
Я действительно наткнулся здесь, исследуя недавний / занятый вопрос « Почему URL чувствительны к регистру? ». Кажется, что фразы типа «IIS нечувствительны к регистру» (упомянутые несколько раз в этом другом потоке) настолько широко распространены, что кажется, что распространенное мнение о том, что URL в IIS всегда нечувствительны к регистру - по крайней мере, такое впечатление я получал - что не похоже на случай вообще.
MrWhite
4

Вот позиция Google из заархивированного сеанса живого чата (ссылка сейчас не работает):

* Приводит ли непоследовательное использование заглавных букв к URL к проблемам с дублированием контента и снижению рейтинга страницы? Например, www.site.com/abc против www.site.com/Abc. На хостах Windows это одна и та же страница, но это разные страницы на хостах Unix.

JohnMu: Привет, Джон, основываясь на существующих стандартах, URL-адреса чувствительны к регистру, так что да, они будут рассматриваться как отдельные URL-адреса. Поскольку содержимое URL-адресов одинаково, мы, как правило, признаем это и оставляем только один из них. Однако мы рекомендуем вам стараться, чтобы все ссылки шли на одну версию URL. Имейте в виду, что это также относится к файлам robots.txt. *

Команда IE рекомендует выбрать соглашение о файловом корпусе и строго придерживаться его, поскольку это может улучшить производительность.

mvark
источник
-2

RFC 3986 6.2.2.1 определяет URI как нечувствительные к регистру, поэтому не стоит делать их чувствительными к регистру, как это делает wordpress.org.

Андреас Кришер
источник
Но не приведет ли это к дублированию контента?
На самом деле нет, потому что поисковые системы также должны работать без учета регистра.
Я полагаю, что теперь вопрос заключается в том, как выяснить, считают ли поисковые системы URL-адреса в верхнем и нижнем регистре эквивалентными? Возьмем, к примеру, Google: попробуйте google.com/Doodles и google.com/doodles
10
Этот RFC касается только трех частей URL. 1 - Протокол ( http://) - регистр не учитывается, нормализуется в нижний регистр. 2 - Имя хоста ( example.com) - без учета регистра, нормализуется до нижнего регистра. 3. Символы в процентах ( %3F) - без учета регистра, нормализуются в верхнем регистре. Остальная часть URL, как правило, чувствительна к регистру
Стивен Остермиллер