Помогите настроить canonical в нижнем регистре

12
Magic Moment
На сайте с 23.08.2015
Offline
67
714

Здравствуйте! На сайте нужно вывести правильный canonical.

Кто подскажет, как правильно написать php-код, чтобы URL отображались в нижнем регистре, даже если в адресной строке URL в верхнем и срабатывало как для кириллических так и для латинских символов?

Например, для страницы вида

site.ru/Page

canonical должен быть

<link rel="canonical" href="site.ru/page" />

а для страницы

site.ru/СТРАНИЦА+на+кирилице

canonical должен быть

<link rel="canonical" href="site.ru/%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b8%d1%86%d0%b0+%d0%bd%d0%b0+%d0%ba%d0%b8%d1%80%d0%b8%d0%bb%d0%b8%d1%86%d0%b5" />

Код

<?php echo'<link rel="canonical" href="'.mb_strtolower($_SERVER['REQUEST_URI']).'" />'?>
не срабатывает.
S
На сайте с 30.09.2016
Offline
469
#1

<?php echo'<link rel="canonical" href="http://site.ru'.str_ireplace('%2F', '/', urlencode(mb_strtolower(urldecode($_SERVER['REQUEST_URI'])))).'" />'?>
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
Magic Moment
На сайте с 23.08.2015
Offline
67
#2
Sitealert:
<?php echo'<link rel="canonical" href="http://site.ru'.str_ireplace('%2F', '/', urlencode(mb_strtolower(urldecode($_SERVER['REQUEST_URI'])))).'" />'?>

Да, это оно))) Спасибо!

богоносец
На сайте с 30.01.2007
Offline
753
#3
MeGGo:
и срабатывало как для кириллических так и для латинских символов

А для кириллических, после стандартного кодирования url, к регистру не сводится.

А вам это зачем?

Magic Moment
На сайте с 23.08.2015
Offline
67
#4
богоносец:
А для кириллических, после стандартного кодирования url, к регистру не сводится.

А вам это зачем?

Нужно было устранить дублирование урлов на сайте.

Не уверен что верно понял первую часть вашего сообщения.

нужно было чтобы в canonical вместо

%D0%A1%D0%A2%D0%A0%D0%90%D0%9D%D0%98%D0%A6%D0%90+%D0%92+%D0%92%D0%95%D0%A0%D0%A5%D0%9D%D0%95%D0%9C+%D0%A0%D0%95%D0%93%D0%98%D0%A1%D0%A2%D0%A0%D0%95

было

%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0+%D0%B2+%D0%B2%D0%B5%D1%80%D1%85%D0%BD%D0%B5%D0%BC+%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B5

код выше решил эту задачу.

Если что - вот декодер: https://www.design-sites.ru/utility/url-encoding.php




---------- Добавлено 06.07.2019 в 21:49 ----------

Sitealert, написал вам в публичный чат. Не уверен, увидели ли вы сообщение, гляньте туда пожалуйста.

богоносец
На сайте с 30.01.2007
Offline
753
#5

%D0%A1...

отличается от

%D1%81...

уже не регистром.

Хотя и разный регистр латиницы - тоже разные урлы (которые ещё и не все можно одновременно увидеть в выдаче).

Позже надо будет 301 на желаемый url, вот тогда, после выкидывания из индекса нежелательных... и считайте, что избавились от дублей.

/ru/forum/1018541

D.iK.iJ
На сайте с 26.05.2013
Offline
225
#6

Попробуйте через getenv("REQUEST_URI")

Адаптивный дизайн в 2 строчки ( https://dikij.com/wm/adaptaciya-saytov.php ). + Принимаю заказы любой сложности ( https://searchengines.guru/ru/forum/926323 ). 💎 Еще я делаю классные кулоны с опалами ( https://mosaicopal.ru/ ).
Magic Moment
На сайте с 23.08.2015
Offline
67
#7
богоносец:
%D0%A1...
отличается от
%D1%81...
уже не регистром.

Хотя и разный регистр латиницы - тоже разные урлы (которые ещё и не все можно одновременно увидеть в выдаче).

Позже надо будет 301 на желаемый url, вот тогда, после выкидывания из индекса нежелательных... и считайте, что избавились от дублей.
/ru/forum/1018541

Разница как раз таки в регистре. Вот большая кириллическая буква "А"

%D0%90

вот маленькая

%D0%B0

по факту паук переходит либо на урл в верхнем регистре, либо на урл в нижнем. За ссыль спасибо.

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

богоносец
На сайте с 30.01.2007
Offline
753
#8

Паук/браузер переходит либо

на %D0%90... либо

на %D0%B0...

кириллицы/emoji в урлах не бывает.

Т.е. разный регистр кириллицы даст разный набор символов, допустимых в урле.

Но даже

/f

и

/F

являются разными урлами... вот тут отличающимися лишь регистром... допустимых в урле символов.

Magic Moment
На сайте с 23.08.2015
Offline
67
#9
богоносец:
Паук/браузер переходит либо
на %D0%90... либо
на %D0%B0...

кириллицы/emoji в урлах не бывает.
Т.е. разный регистр кириллицы даст разный набор символов, допустимых в урле.

Но даже
/f
и
/F
являются разными урлами... вот тут отличающимися лишь регистром... допустимых в урле символов.

так я не про урл в адресной строке, а про урл в canonical)

богоносец
На сайте с 30.01.2007
Offline
753
#10

А что, бот различает в адресной строке и в каноникал?

Можно хоть на этой странице оставить сцылку

https://ru.wikipedia.org/wiki/Ракета

думаете бот/браузер не преобразует в

https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%BA%D0%B5%D1%82%D0%B0

https://ru.wikipedia.org/wiki/URL#%D0%9A%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_URL

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий