htaccess: избежать бесконечного цикла при предоставлении строки запроса в errordocument - PullRequest
0 голосов
/ 30 июня 2019

в .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]

Я хочу получить доступ к исходной ошибочной строке запроса на странице ошибки.

...