Apache mod_rewrite поймать всех, не поймать всех - PullRequest
0 голосов
/ 05 марта 2020

Я использую OW ASP ZAP, чтобы протестировать свой сайт перед запуском его, и я заметил, что получаю некоторые неожиданные результаты, которые я не могу объяснить.

Во-первых, все должно быть направленным на индекс. php для последующей обработки. Итак, у меня есть простое правило mod_rewrite, которое должно перехватывать все.

RewriteRule ^(.*)$ /index.php [L,NC]

Однако во время тестирования я заметил, что в некоторых случаях это возвращало 404. Я бы предположил, что с правилом всеобщего охвата, что 404 невозможно.

Примером чего-то, что вызывает 404, является

%2FWEB-INF%2Fweb.xml

, но использование фактических слешей в запросе, таких как

/WEB-INF/web.xml

, работает как задумано и запрос обрабатывается индексом. php.

Похоже, что кодировка sla sh (% 2F) вызывает проблему, но я не понимаю, почему.

Теперь, Я легко могу справиться с этой ситуацией, установив директиву ErrorDocument, указывающую на индекс. php, но это касается того, что 404 происходит в первую очередь.

В случае, если это имеет значение, вот определение Справочника.

<Directory /var/www/html/>
    Options None
    AllowOverride All
    Require all granted
</Directory>
...