Если YandexBot/3.0 отправляет запросы с URL-кодированием в windows-1251, есть несколько способов обработать такие запросы в PHP:
1. Преобразовать URL из windows-1251 в UTF-8:
$url = urldecode(mb_convert_encoding($url, 'UTF-8', 'Windows-1251'));
2. Использовать специальные функции для работы с кодировкой, например iconv
:
$url = urldecode(iconv('Windows-1251', 'UTF-8', $url));
3. Можно использовать библиотеку mbstring
для работы с многобайтовыми строками:
$url = urldecode(mb_convert_encoding($url, 'UTF-8', 'Windows-1251'));
4. Настроить сервер таким образом, чтобы он обрабатывал URL-кодирование в windows-1251. В файле .htaccess
можно добавить следующие строки:
RewriteRule ^(.*)$ /index.php?url=$1 [B,E=NEED_ENC:windows-1251]
Как вариант, можно изменить настройки сервера (например, в Apache) для обработки параметров запроса с кодировкой windows-1251.
Выбор конкретного способа будет зависеть от вашей ситуации и инфраструктуры. Убедитесь, что выбранное решение соответствует вашим потребностям и рекомендациям по безопасности.