URL-encoded 404 ошибка.

H
На сайте с 23.05.2011
Offline
3
677

Добрый день. Ситуация следующая:

на сайте все внутренние ссылки кириллические.

http://www.szdk.ru/бани-из-бруса/ - работает.

http://www.szdk.ru/%E1%E0%ED%E8-%E8%E7-%E1%F0%F3%F1%E0/

url в раскдированном виде, должен открываться, но выдает ошибку 404. Как быть? Где копать?

ParserYa
На сайте с 04.10.2010
Offline
29
#1

http://www.szdk.ru/%D0%B1%D0%B0%D0%BD%D0%B8-%D0%B8%D0%B7-%D0%B1%D1%80%D1%83%D1%81%D0%B0/ - вот правильный urlencode от той ссылки, что вы дали. Копать в сторону преобразования кодировки перед urlencode.

H
На сайте с 23.05.2011
Offline
3
#2
ParserYa:
http://www.szdk.ru/%D0%B1%D0%B0%D0%BD%D0%B8-%D0%B8%D0%B7-%D0%B1%D1%80%D1%83%D1%81%D0%B0/ - вот правильный urlencode от той ссылки, что вы дали. Копать в сторону преобразования кодировки перед urlencode.

Дело в том, что такие ссылки яндекс выдает в 404 ошибке. Может где-то в htacces можно настроить?

ParserYa
На сайте с 04.10.2010
Offline
29
#3

Как Яндекс то может отдавать 404 на мою ссылку, если браузер отдает 200?

Объясняю вам в ссылке http://www.szdk.ru/%E1%E0%ED%E8-%E8%E7-%E1%F0%F3%F1%E0/ вы делаете urlencode слова "бани-из-бруса" в ANSI(Windows-1251) кодировке. По скольку сервер у вас настроен на utf-8, то выдается 404 ошибка, потому что после urldecode получается не известно что.

Если перед тем как делать urlencode, вы преобразуете кодировку строки, содержащей ссылку, в utf-8(в банях из бруса получится http://www.szdk.ru/%D0%B1%D0%B0%D0%BD%D0%B8-%D0%B8%D0%B7-%D0%B1%D1%80%D1%83%D1%81%D0%B0/), а потом только заенкодите, то у вас получится правильная ссылка, которая будет возвращать "200 ОК".

H
На сайте с 23.05.2011
Offline
3
#4
ParserYa:
Как Яндекс то может отдавать 404 на мою ссылку, если браузер отдает 200?
Объясняю вам в ссылке http://www.szdk.ru/%E1%E0%ED%E8-%E8%E7-%E1%F0%F3%F1%E0/ вы делаете urlencode слова "бани-из-бруса" в ANSI(Windows-1251) кодировке. По скольку сервер у вас настроен на utf-8, то выдается 404 ошибка, потому что после urldecode получается не известно что.
Если перед тем как делать urlencode, вы преобразуете кодировку строки, содержащей ссылку, в utf-8(в банях из бруса получится http://www.szdk.ru/%D0%B1%D0%B0%D0%BD%D0%B8-%D0%B8%D0%B7-%D0%B1%D1%80%D1%83%D1%81%D0%B0/), а потом только заенкодите, то у вас получится правильная ссылка, которая будет возвращать "200 ОК".

Спасибо.

Про Яндекс я писал не конкретно про вашу ссылку, а про то, что в панели Yandex.webmaster в разделе HTTP-статус: Ресурс не найден (404) появляются ссылки вида:

http://www.szdk.ru/%F1%E2%E0%E9%ED%FB%E9-%F4%F3%ED%E4%E0%EC%E5%ED%F2.html

http://www.szdk.ru/%E4%EE%EC%E0-%E8%E7-%E1%F0%F3%F1%E0/

От куда они берутся и как с этим бороться? :)

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