LINUX.ORG.RU
ФорумAdmin

Апач реврайтит урлкодированные ссылки в нижний регистр

 ,


0

2

Например есть ссылка: /Услуги

Урлкодировано она выглядит как: /%D0%A3%D1%81%D0%BB%D1%83%D0%B3%D0%B8

Апач её передает в пышечку уже в таком виде: /%d0%a3%d1%81%d0%bb%d1%83%d0%b3%d0%b8 а там роуты регистрозависимые, конечно можно впилить туда кейс-инсенситив, но это будут же дубликаты, сеошники взвоют.

Кстати с латиницей он так не делает, т.е. /TeStMe так и передается как /TeStMe

Что-то гугуль не дает вменяемых результатов. Кто с таким встречался? Куда копать?

Ответ на: комментарий от deep-purple

Представь себе все это на пыхе - во что превратится обработка входящего реквеста

В пхп нет урл_декоде()?

PolarFox ★★★★★
()
Ответ на: комментарий от anonymous

Если я декодирую это уже будет не URL

deep-purple ★★★★★
() автор топика
Ответ на: комментарий от deep-purple

http://www.faqs.org/rfcs/rfc3986.html

The uppercase hexadecimal digits 'A' through 'F' are equivalent to
the lowercase digits 'a' through 'f', respectively. If two URIs
differ only in the case of hexadecimal digits used in percent-encoded
octets, they are equivalent.

Да, есть такая штука, как URI normalizer - за этим вопросом обращаемся к rewrite или в апстрим. Но эквивалетность есть эквивалетность.

anonymous
()
Ответ на: комментарий от deep-purple

А ты возьми и ручками в браузер скопируй

anonymous
()
Ответ на: комментарий от deep-purple

А для поисковика - нет. Есть пруфы что это не так?

А есть пруфы, что для поисковика это так?

xtraeft ★★☆☆
()
Ответ на: комментарий от deep-purple

дубликаты страниц
В индексе

Пусть твои сеошники откроют для себя rel canonical

xtraeft ★★☆☆
()
Ответ на: комментарий от anonymous

Ты мне сначала пруф что это не так покажи

Ну вот яша говорит говорит, но мутно, нет конкретики, но сказано что хранит кириллицу, а вот как хранит не сказано: https://help.yandex.ru/webmaster/yandex-indexing/cyrillic-urls.xml ищу пруфы

deep-purple ★★★★★
() автор топика
Ответ на: комментарий от deep-purple

ищу пруфы

Так давай напишем им в саппорт. http://webmaster.yandex.ru/site/feedback.xml Пусть твои сеошники спросят (надо писать с указанием сайта)? Только поделись потом ответом.

xtraeft ★★☆☆
()
Последнее исправление: xtraeft (всего исправлений: 1)
Ответ на: комментарий от deep-purple

ceo

http://habrahabr.ru/post/91797/

Ахаха! «Замеряем SEO-уровень для вашего сайта с помощью Microsoft SEO Toolkit»

статья лохматых годов про вредность default... «Проблема №1: Документ по умолчанию»

продолжайте в том же духе!

mumpster ★★★★★
()
Ответ на: комментарий от xtraeft

Ы?

For consistency, URI producers and normalizers should use uppercase hexadecimal digits for all percent-encodings.

Надо больше спать

И до конца пункт читать

deep-purple ★★★★★
() автор топика
Ответ на: комментарий от berrywizard

Кстати, тем не менее, мы живём в том мире, в каком живём, и программа, которая не делает «MUST» из RFC, тем не менее, может существовать, и максимум, что с ней могут сделать — это сказать про неё, что она «не соответствует RFC».

berrywizard ★★★★★
()
Ответ на: комментарий от xtraeft

Яндекс ответил. Важная выжимка:

1)

/main-services/%D0%A3%D1%81%D0%BB%D1%83%D0%B3%D0%B8?a=2&b=X /main-services/%d0%a3%d1%81%d0%bb%d1%83%d0%b3%d0%b8?a=2&b=X

Для робота это - одна и та же страница.

2)

/main-services/%D0%A3%D1%81%D0%BB%D1%83%D0%B3%D0%B8?a=2&b=X /MAIN-SERVICES/%D0%A3%D1%81%D0%BB%D1%83%D0%B3%D0%B8?a=2&b=X

Две разных страницы (меняется регистр некодированной части).

3)

/main-services/%D0%A3%D1%81%D0%BB%D1%83%D0%B3%D0%B8?a=2&b=X /main-services/%D0%a3%D1%81%D0%bb%D1%83%D0%b3%D0%b8?a=2&b=X

Одна страница.

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

Так-что да, berrywizard - рассматриваемый в данном случае опач «почти» соответствует RFC )))

mumpster - это первый пункт выдачи гугла. Дальше я просто не смотрел.

thesis - давай, вычеркивай меня из своей «калекции», и ответь как админ НЕадмину - куда копать опач, чтобы оный не трогал регистр урлкодированной части? Он тут единственный, кто отличился. Тем более, судя по SO, не у меня одного такая проблема возникала. Щас точно узнаю что там за ось и какой версии опач.

deep-purple ★★★★★
() автор топика
Ответ на: комментарий от xtraeft

Гугл к сожалению внятного ответа не дал..

deep-purple ★★★★★
() автор топика
Ответ на: комментарий от deep-purple

Вычеркивать? Да ты с ума сошел.
Ты - жемчужина, практически.
Скажи, ты роуты в цмс так и пишешь - " /%D0%A3%D1%81%D0%BB%D1%83%D0%B3%D0%B8"?

thesis ★★★★★
()
Ответ на: комментарий от thesis

Эти «алиасы» в БД прямо хранятся - это можно сказать «статические» страницы с текстом. Т.е. роуты типа динамические, а те, которые не динамические - то в латинице и так.

И давай, жемчужина, без перехода на личности, лучше заостри свое внимание на решении задачи. Если не можешь, не хочешь или не умеешь, то так и скажи.

Инфа:

GATEWAY_INTERFACE => CGI/1.1 REQUEST_METHOD => GET SERVER_SOFTWARE => Apache/2.2.22 (Debian 7.5) FCGI_ROLE => RESPONDER

Ого, дебианчик, не стренький, и версия опача не бородатая. В «сквезе» опач работал не так. Хотя тут может играть роль что CGI, а не как модуль. Куда копать?

deep-purple ★★★★★
() автор топика
Ответ на: комментарий от deep-purple

в БД прямо хранятся

Вау, прямо хранятся прямо в БД. В прямом, надо полагать, виде.

Если не можешь, не хочешь или не умеешь, то так и скажи.

Бугога, молодой талантливый программист пытается взять меня на слабо.

Вторая страница бредятины, но все еще не написано, каким именно образом регистр представления строки приводит к проблемам. «ПАЧЕНИТЕ МНЕ ОПАЧ АААААА».

thesis ★★★★★
()
Ответ на: комментарий от thesis

молодой

С чего ты взял?

талантливый

Если бы так, то я бы не задавал тут вопросы

программист

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

хранятся прямо в БД. В прямом, надо полагать, виде.

Почти. Эти нюансы не особо важны.

каким именно образом регистр представления строки приводит к проблемам

1) Яша хранит индекс в верхнем регистре, даже если получал его в нижнем. 2) Выдача в поиске происходит в верхнем регистре. 3) Опач из-за каких-то своих настроек опускает в нижний и передает в скрипт уже нижний регистр. 4) Скрипт не находит соответствия с алиасом в БД.

И в данной ситуации я предположил что будет проще настроить опач чтобы он не опускал регистр (тем более, такое поведение НЕ рекомендовано RFC), чем перелопачивать половину сайта.

М?

deep-purple ★★★★★
() автор топика
Ответ на: комментарий от deep-purple

вместо того чтобы разобраться что мне нужно

Не с чем тут разбираться. Тебе нужно заниматься низкоквалифицированным физическим трудом.

4) Скрипт не находит соответствия с алиасом в БД.

Ну вот, собственно, проблема и прояснилась.
И это проблема не апача, а ДНК кодера, как и предполагалось с самого начала.
И это, не нравятся мои ответы - нехер меня кастовать.

thesis ★★★★★
()
Ответ на: комментарий от thesis

Ну и уже стало ясно что ты не можешь ответить на вопрос «где и как настроить опач» (другие то опачи как-то работают и не опускают в нижний регистр) - за сим фраза «Тебе нужно заниматься низкоквалифицированным физическим трудом» может быть применима к тебе самому.

deep-purple ★★★★★
() автор топика
Ответ на: комментарий от deep-purple

Вот именно это, и еще первое предложение этого же абзаца должны были заставить любого человека, обладающего хотя бы зачатками разума схватиться за голову с криком «ох я дебиииииил» и пометить тему как решенную.

Поскольку тема еще не помечена, ты уж не обижайся.

thesis ★★★★★
()
Ответ на: комментарий от deep-purple

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

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: лучше так от crowbar

А что наконфижить чтобы он этого не делал (только этот конкретный апач, т.к. остальные апачи не ловеркейсят)?

deep-purple ★★★★★
() автор топика
Ответ на: комментарий от deep-purple

spelling

что наконфижит

заклинание сказать, не? ;)

http://httpd.apache.org/docs/2.2/mod/mod_speling.html

вот ещё прелестное с вашего любимого SA:

http://stackoverflow.com/questions/19048192/force-lower-case-of-urls-override...

(ВНЕЗАПНО! Ахтунги! Там упоминаются сео! И это явно не chief executive ;)

mumpster ★★★★★
()
Последнее исправление: mumpster (всего исправлений: 1)
Ответ на: комментарий от berrywizard

Кстати, дарю:

sub normalize_uri {
 (my $u = shift) =~ s/\%([[:xdigit:]][[:xdigit:]])/pack("H2", ($1))/ges;
 $u = uc($u) if defined({qw/dos 1 os2 2 MSWin32 3 Cygwin 4/}->{$^O}); # добавить другие регистронезависимые по вкусу
 return $u;
}

berrywizard ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.