в .htaccess, я обнаруживаю, когда аргумент url 'recherche' слишком длинный и в этом случае создает ошибку 403, и пытаюсь передать строку query_string в errordocument.
Но передача строки запроса создает бесконечный цикл, которого мне не удается избежать.
В .htaccess у меня есть 2 набора правил:
1) Обнаружить состояние ошибки (= обнаружить слишком длинную строку поиска):
RewriteCond %{QUERY_STRING} recherche=[^&]{40} [NC]
RewriteRule .* - [R=403,QSA]
2) Установить ошибочный документ:
ErrorDocument 403 /spip.php?page=403&%{QUERY_STRING}
Это создает бесконечный цикл.
Когда я не передаю% {QUERY_STRING} в errordocument, бесконечного цикла больше нет, но у меня нет доступа к строке запроса в документе об ошибке.
Я попытался добавить еще одну перезапись секунды в перезаписывающую ошибку для обнаружения ошибок, чтобы избежать зацикливания:
RewriteCond %{QUERY_STRING} recherche=[^&]{40} [NC]
RewriteCond %{QUERY_STRING} !page=403 [NC]
RewriteRule .* - [R=403,QSA]
и это исправляет бесконечный цикл ... но тогда больше не будет 403 обнаружения!
Я также попробовал [F, QSA] вместо [R = 403]
Я хочу получить доступ к исходной ошибочной строке запроса на странице ошибки.