301 редирект для кириллических URL
4 октября 2022
В процессе подготовки к релизу проекта столкнулись с вопросом настройки 301 редиректа для кириллических URL. Вроде бы задача довольно простая, но есть свои особенности. Как же она решалась?
- Изначально просто разместили все ссылки как есть (без транслитерации) в файле .htaccess в корне сайта. Итог - редиректы не работают
- Далее попытались сконвертировать через punycode ссылку. Далеко не все сервисы поддерживают конвертацию URL, они конвертят доменные имена. И это неспроста. В спецификации указано, что punycode работает только с доменами, внутренние же ссылки сайта обрабатываются иначе.
- Давайте проверим логи доступа апача (access.log), как там данные адреса представлены. Ведь именно по такой записи и придется работать с редиректом. В итоге в логе была кодированная строка, где вместо кириллицы - латинское представления вида (ссылка = %D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0). Отлично. Пробуем - редирект всё равно не работает, хотя казалось бы...
- Хорошо, а в какой кодировке у нас файл .htaccess? Посмотрели: windows-1251. Такс, оказалось, что IDE, встретив русские символы, сама конвертнула файл в данную кодировку. А для .htaccess нужна кодировка именно utf-8, к тому же без первых двух байтов (так называемого признака кодировки BOM). Значит, нужно аккуратно перекодировать файл!