#php #apache #http #url #query-string
#php #apache #http #url #запрос-строка
Вопрос:
Это самая странная проблема в моей жизни, и я даже не могу ее Погуглить. Это происходит на веб-сайте на базе Apache, написанном на PHP, который использует mod_rewrite (но это не проблема, я попытался удалить файл .htaccess, проблема все еще существует).
Если у меня есть строка запроса, которая выглядит точно или похожа на: =/id
я получаю ответ 501:
Метод не реализован
ПЕРЕХОД к / не поддерживается.
Кроме того, при попытке использовать ErrorDocument для обработки запроса была обнаружена ошибка 404 Not Found.
Я никогда не писал такую страницу с ошибкой, никогда не отправлял ответ 501, не имею ни малейшего понятия, откуда это происходит. Изначально у меня был длинный URL, который выдавал аналогичную ошибку, но я сократил этот небольшой фрагмент выше. Если я удалю или изменю какой-либо символ, ошибка исчезнет.
Если это поможет: мой сайт commentards.net , а исходный URL-адрес был запросом входа в OpenID, который выглядит следующим образом:
http://commentards.net/q/user/auth ?openid_identifier=https://www.google.com/accounts/o8/id
из которого строка запроса:
?openid_identifier=https://www.google.com/accounts/o8/Fid
Комментарии:
1. Строка запроса не должна содержать никаких? внутри, вы пробовали с вопросительным знаком в urlencoded?
2. У меня не было проблем с другими запросами. Ваше право, я неправильно использовал этот термин, я изменил свой вопрос
Ответ №1:
Я обратился в службу поддержки, и они сказали, что это mod_security, и отключили его для моего сайта. И теперь он работает нормально. Я должен был начать с этого. В любом случае, спасибо за вашу помощь.
Комментарии:
1. omg большое спасибо за публикацию вашего решения! у меня была аналогичная проблема с параметром GET в json-кодировке, где часть значения параметра была
|id
— я получал 501 ошибку, и это сводило меня с ума! это был modsec!!!
Ответ №2:
Urlencode ваш параметр (ы) строки запроса.
https://www.google.com/accounts/o8/id становится https://www.google.com/accounts/o8/Fid
http://commentards.net/q/user/auth ?openid_identifier=https://www.google.com/accounts/o8/Fid работает нормально, так что HerrSerker уже ответил на ваш вопрос.
Комментарии:
1. То, что вы дали, было не «… / o8 / id», а «… / o8 / Fid», и именно поэтому это сработало. Первый по-прежнему не работает. Я тестировал с firefox, и firefox кодирует его автоматически. Я использовал meyerweb.com/eric/tools/dencoder чтобы расшифровать указанный вами URL-адрес