htaccess:在向错误文档提供query_string时避免无限循环

时间:2019-06-30 13:51:47

标签: .htaccess url-rewriting query-string http-status-code-403 errordocument

在.htaccess中,我检测到'recherche'url参数何时过长,并在这种情况下产生403错误,然后尝试将query_string传输到错误文档。 但是传递查询字符串会创建一个无限循环,我无法避免。

在.htaccess中,我有2套规则:

1)检测错误情况(=检测到过长的搜索字符串):

    RewriteCond %{QUERY_STRING} recherche=[^&]{40} [NC]
    RewriteRule .* - [R=403,QSA]

2)设置错误文档:

    ErrorDocument 403 /spip.php?page=403&%{QUERY_STRING}

这将创建一个无限循环。

当我不将%{QUERY_STRING}传递给错误文档时,就没有更多的无限循环,但是我无法访问错误文档中的query_string。

我已经尝试在错误检测重写器中添加另一个rewritecond,以避免循环:

    RewriteCond %{QUERY_STRING} recherche=[^&]{40} [NC]
    RewriteCond %{QUERY_STRING} !page=403 [NC]
    RewriteRule .* - [R=403,QSA]

它修复了无限循环...但是随后没有403检测了!

我还尝试了[F,QSA]而不是[R = 403]

我希望能够访问错误文档页面中原始的有问题的query_string。

0 个答案:

没有答案