Как остановить ошибку 400, когда URL содержит символ процента%?(Apache) - PullRequest
5 голосов
/ 16 августа 2011

Существует ли простой способ предотвратить возвращение сервером ошибки 400 (неверный запрос), когда запрашивается URL-адрес, содержащий символ процента%?

Многие крупные сайты имеют такую ​​же проблему, например: http://twitter.com/% или http://bing.com/%

Но другие сайты исправили это и вместо этого возвращают пользовательскую страницу ошибки, а не стандартный ответ сервера, например: http://facebook.com/% или http://google.com/%

Существует ли простой, единственный способ избежать возврата символа 400 с одним символом%, но вместо этого вернуть ошибку 404 с помощью пользовательского документа об ошибке с использованием mod_rewrite или аналогичного в Apache?

Ответы [ 2 ]

3 голосов
/ 16 августа 2011

Есть ли простой, единственный способ избежать возврата символа 400 с одним символом%

Да, вы должны urlencode любых символов, которые вы вводите в URL, если они не имеют специального значения.

Например, в PHP:

$string = urlencode('%');

FYI % кодируется как %25: https://twitter.com/%25

0 голосов
/ 13 марта 2014

Я решил это, сделав две вещи. Используя конфигурацию apache, я направил эту ошибку в мой документ 400.shtml. Второе было в моем файле .htaccess:

RewriteEngine On
RewriteRule 400.shtml 404.shtml [L]

Вы можете поиграть с этими двумя и использовать свой серверный скрипт, чтобы обработать эту ошибку, а не 404.shtml.

Приветствие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...