Важность регистра букв в адресе сайта
В ходе написания сайта часто приходится сталкиваться с нестандартными ситуациями, которые в последствии влияют на продвижение. Не стоит удивляться появившимся дубликатам в поиске, если страница будет доступна по различным регистрам букв.
Например:
https://site.ru/page1/
и
https://site.ru/Page1/
Если по факту это одна страница и она открывается по обеим ссылкам, то поисковая система распознает их как разные. Да, поисковики чувствительны к регистру в адресной строке. Это правило, кстати, не касается доменного имени.
В целом изначально рекомендуется придерживаться нижнего регистра, а прочим вариантам отдавать 404 ошибку. Если же данная проблема уже присутствует на сайте и страницы попали в поисковую выдачу, то необходимо настроить 301 редирект со всех страниц на страницу с нижним регистром.
Пример настройки редиректа.
Nginx
Для начала необходимо установить библиотеку со встроенным модулем perl.
Ubuntu:
apt-get install nginx-extras
Другие ОС:
apt-get install nginx-full
Далее в конфигурационном файле nginx.conf в раздел http добавляем:
http {
...
# Include the perl module
perl_modules perl/lib;
# Define this function
perl_set $uri_lowercase 'sub {
my $r = shift;
my $uri = $r->uri;
$uri = lc($uri);
return $uri;
}';
}
Затем в файле настройке самого сайта в разделе server добавляем:
server {
location ~ [A-Z] {
rewrite ^(.*)$ $scheme://$host$uri_lowercase;
}
...
}
Перезагружаем nginx:
/etc/init.d/nginx reload
Apache
Добавляем строку в конфигурационный файл сайта или в default.conf в раздел VirtualHost:
<VirtualHost *>
RewriteMap lc int:tolower
...
</virtualhost>
Затем в директории сайта дополняем (или создаем, если нет) файл .htaccess:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^[^A-Z]*[A-Z].*
RewriteRule ^ ${lc:%{REQUEST_URI}} [L,R=301]
или
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lc:$1} [R=301,L]
Перезагружаем apache:
/etc/init.d/apache2 reload