Почему этот URL-адрес вызывает неверный запрос на моем сервере?

У меня есть URL-адрес, который заканчивается на %. Как 2_. Разве нельзя иметь % в конце URL-адреса? Если это не разрешено, как я могу сделать это по-другому, и если это разрешено, почему это вызывает плохой запрос?

Спасибо.

обновление: точная ошибка:

Bad Request
Your browser sent a request that this server could not understand.

person Loolooii    schedule 26.03.2013    source источник
comment
Это может помочь: Apache: %25 в URL-адресе (400 неверных запросов)   -  person Sam R.    schedule 26.03.2013
comment
Какой сервер обслуживает ваши страницы?   -  person Chris Mantle    schedule 26.03.2013
comment
@SamRad, поскольку это имело место только в 1 URL-адресе, я решил это, используя str_replace, поместив его с процентами, а на сервере изменив его обратно на %. Уродливое решение, но в моем случае достаточно!   -  person Loolooii    schedule 26.03.2013


Ответы (2)


«%» используется в URL-адресах в качестве префикса для кода ASCII (?) UTF-8 (?). Например, «пробел» (ASCII 32 или шестнадцатеричный 0x20) можно заменить на «%20». За префиксом «%» следуют две шестнадцатеричные цифры. Веб-сервер должен взять "%20" и преобразовать его в пробел.

Когда у вас есть «%» в конце URL-адреса, у вас нет двух шестнадцатеричных цифр после «%», поэтому замена не может быть выполнена, и URL-адрес фактически искажен. На самом деле это неверный URL.

Вот почему серверу это не нравится.

person Brad    schedule 26.03.2013
comment
У него %25, а не %.. ну, вы предполагаете, что у него буквально %, тогда как он имеет в виду, что правильно закодировал % как %25, и это все равно не работает... - person Esailija; 26.03.2013

Я просто решил эту проблему, заменив % на percent, потому что это было только в одном из моих URL-адресов. Для лучшего решения см. эту ссылку. Сэм Рэд предоставил мой первый комментарий к моему сообщению: Apache: %25 в URL (400 неверный запрос)

person Loolooii    schedule 26.03.2013