Close

Дубли страниц заглавными буквами


iSmel
366

В яндекс вебмастере постоянно появляются дубли и меняют друг друга в индексе с вариациями написания строчными и заглавными буквами. например: site.ru/brand/Apple и site.ru/brand/apple

Оба адреса ведут на одну страницу естественно а яндекс их видит как разные и лепит дубли…

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

rel canonical битрикс не прописывает сам на себя, только если страница пагинации есть или еще какой-то параметр…


Vladimir SEO

Редирект естественно


iSmel

xVOVAx:
Редирект естественно

Логика в этом есть, вопрос как, если этих страниц сотни, а заглавная буква может всплыть не только первой но и посередине слова… возможно есть какие-то регулярки…


Vladimir SEO

iSmel:
Логика в этом есть, вопрос как, если этих страниц сотни, а заглавная буква может всплыть не только первой но и посередине слова… возможно есть какие-то регулярки…

Есть , мне программисты мои делают такое для старых сайтов. Редирект по регистру


богоносец

А завтра вылезет проблема с произвольными параметрами.

Этот форум отвечает 404 на смену регистра буквы урла (это разные урлы).

А хочется заплатку…

про одну из них лет 10 назад ответило

В настоящий момент из страниц, url которых различается только в регистре, в результатах поиска может участвовать только одна из этих страниц. C помощью файла sitemap можно повлиять на URL отображаемой страницы в результатах поиска, указав в нем адрес страницы в требуемом регистре.

С уважением, Платон Щукин

Но правильнее – ответ 404 или 301 на неправильный регистр.

А с разным регистром + разным контентом индексилось нормально.


Hammer8

iSmel, Это не проблема, если не хотите настраивать Apache, пропишите в htaccess:

RewriteEngine On

RewriteBase /
# If there are caps, set HASCAPS to true and skip next rule
RewriteRule [A-Z] - [E=HASCAPS:TRUE,S=1]
# Skip this entire section if no uppercase letters in requested URL
RewriteRule ![A-Z] -
# Replace single occurance of CAP with cap, then process next Rule.
RewriteRule ^([^A]*)A(.*)$ $1a$2
RewriteRule ^([^B]*)B(.*)$ $1b$2
RewriteRule ^([^C]*)C(.*)$ $1c$2
RewriteRule ^([^D]*)D(.*)$ $1d$2
RewriteRule ^([^E]*)E(.*)$ $1e$2
RewriteRule ^([^F]*)F(.*)$ $1f$2
RewriteRule ^([^G]*)G(.*)$ $1g$2
RewriteRule ^([^H]*)H(.*)$ $1h$2
RewriteRule ^([^I]*)I(.*)$ $1i$2
RewriteRule ^([^J]*)J(.*)$ $1j$2
RewriteRule ^([^K]*)K(.*)$ $1k$2
RewriteRule ^([^L]*)L(.*)$ $1l$2
RewriteRule ^([^M]*)M(.*)$ $1m$2
RewriteRule ^([^N]*)N(.*)$ $1n$2
RewriteRule ^([^O]*)O(.*)$ $1o$2
RewriteRule ^([^P]*)P(.*)$ $1p$2
RewriteRule ^([^Q]*)Q(.*)$ $1q$2
RewriteRule ^([^R]*)R(.*)$ $1r$2
RewriteRule ^([^S]*)S(.*)$ $1s$2
RewriteRule ^([^T]*)T(.*)$ $1t$2
RewriteRule ^([^U]*)U(.*)$ $1u$2
RewriteRule ^([^V]*)V(.*)$ $1v$2
RewriteRule ^([^W]*)W(.*)$ $1w$2
RewriteRule ^([^X]*)X(.*)$ $1x$2
RewriteRule ^([^Y]*)Y(.*)$ $1y$2
RewriteRule ^([^Z]*)Z(.*)$ $1z$2
# If there are any uppercase letters, restart at very first RewriteRule in file.
RewriteRule [A-Z] - [N]
RewriteCond %{ENV:HASCAPS} TRUE
RewriteRule ^/?(.*) /$1 [R=301,L]


iSmel

Hammer8:
iSmel, Это не проблема, если не хотите настраивать Apache, пропишите в htaccess:

RewriteEngine On

RewriteBase /
# If there are caps, set HASCAPS to true and skip next rule
RewriteRule [A-Z] - [E=HASCAPS:TRUE,S=1]
# Skip this entire section if no uppercase letters in requested URL
RewriteRule ![A-Z] -
# Replace single occurance of CAP with cap, then process next Rule.
RewriteRule ^([^A]*)A(.*)$ $1a$2
RewriteRule ^([^B]*)B(.*)$ $1b$2
RewriteRule ^([^C]*)C(.*)$ $1c$2
RewriteRule ^([^D]*)D(.*)$ $1d$2
RewriteRule ^([^E]*)E(.*)$ $1e$2
RewriteRule ^([^F]*)F(.*)$ $1f$2
RewriteRule ^([^G]*)G(.*)$ $1g$2
RewriteRule ^([^H]*)H(.*)$ $1h$2
RewriteRule ^([^I]*)I(.*)$ $1i$2
RewriteRule ^([^J]*)J(.*)$ $1j$2
RewriteRule ^([^K]*)K(.*)$ $1k$2
RewriteRule ^([^L]*)L(.*)$ $1l$2
RewriteRule ^([^M]*)M(.*)$ $1m$2
RewriteRule ^([^N]*)N(.*)$ $1n$2
RewriteRule ^([^O]*)O(.*)$ $1o$2
RewriteRule ^([^P]*)P(.*)$ $1p$2
RewriteRule ^([^Q]*)Q(.*)$ $1q$2
RewriteRule ^([^R]*)R(.*)$ $1r$2
RewriteRule ^([^S]*)S(.*)$ $1s$2
RewriteRule ^([^T]*)T(.*)$ $1t$2
RewriteRule ^([^U]*)U(.*)$ $1u$2
RewriteRule ^([^V]*)V(.*)$ $1v$2
RewriteRule ^([^W]*)W(.*)$ $1w$2
RewriteRule ^([^X]*)X(.*)$ $1x$2
RewriteRule ^([^Y]*)Y(.*)$ $1y$2
RewriteRule ^([^Z]*)Z(.*)$ $1z$2
# If there are any uppercase letters, restart at very first RewriteRule in file.
RewriteRule [A-Z] - [N]
RewriteCond %{ENV:HASCAPS} TRUE
RewriteRule ^/?(.*) /$1 [R=301,L]

Спасибо!! Завтра потестирую


miketomlin

Мать честная, есть же RewriteMap с int:tolower.

Или программно во фронте что-нить подобное на(ш)кодить, например, как я показал тут (см. фильтр в показанном фрагменте кода). Проверить, как работает этот код можно, например, тут: g09.ru///Articles///My-First-Article/// (только трэйлинг слеши исправляются отдельным фильтром в .htaccess, поэтому может быть более одного редиректа).

———- Добавлено 17.04.2020 в 12:35 ———-

P.S. Хотя для RewriteMap определен контекст server config, virtual host. Т.е. на шареде, наверное, не прокатит.

Добавить комментарий