Apache не обрабатывает закодированные URL с помощью% 3F - PullRequest
3 голосов
/ 20 марта 2012

URL-адреса проблемных ссылок на мой веб-сайт имеют вид

/ fullpage.php% 3F% 20cp3_Hex% 3D0F0200% 26cp2_Hex% 3D000000% 26cp1_Hex% 3DFC2024

Некодированный URL-адрес:

/ fullpadge.php? Cp3_Hex = 0F0200 & cp2_Hex = 000000 & cp1_Hex = FC2024

Apache возвращает:

403: У вас нет разрешения на доступ к /fullpage.php?cp3_Hex = 0F0200 & cp2_Hex = 000000

Я пробовал следующее правило перезаписи

RewriteRule ^ / fullpage.php% 3F (. *) $ /fullpage.php?$1

безрезультатно

Любые идеи

1 Ответ

0 голосов
/ 02 февраля 2016

Вы почти наверняка получите ошибку 403.Ошибка вызвана потому что?является запрещенным символом имени файла / каталога в Windows и Linux.Это означает, что когда Apache пытается найти файл или каталог с именем «/document/root/index.php?blah» (после декодирования), и это вызывает ошибку 403.Это происходит перед чтением файлов .htaccess, поэтому вы не можете использовать mod_rewrite в файле .htaccess, чтобы переопределить эту ошибку 403 или ErrorDocument, определенный в файле .htaccess, чтобы перехватить эту ошибку.

Единственный способ поймать% 3f - это использовать mod_rewrite или ErrorDocument в VirtualHost , например, в httpd-vhosts.conf (или конфигурации основного сервера, если их нет"Virtualhost", например, в httpd.conf).

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