Common causes
- A GET form or AJAX call sending large data (long filter lists, base64 strings, serialized arrays) in the query string
- A redirect loop that appends parameters to the URL on every hop until it overflows
- Tracking or analytics parameters repeatedly added by a plugin or link wrapper
- Faceted search or filter plugins building very long URLs with many selected options
- Apache LimitRequestLine (default 8190 bytes) or Nginx large_client_header_buffers (default 4 8k) reached
How to fix it
- Look at the actual URL. Copy the failing URL from the browser or access log. If you see the same parameter repeated many times or redirect= nested inside itself, you have a redirect loop, not a size problem.
- Switch large requests to POST. Change the form's method to POST or send the data as a JSON body in fetch/axios. Request bodies are limited by different (much larger) settings than URLs.
- Fix redirect rules that append parameters. Check .htaccess and redirect plugins for rules that use QSA or append ?redirect_to= on every pass. Make sure the rule stops once it has applied.
- Shorten filter URLs. Store long filter selections server-side or in a short ID, or use comma-separated IDs instead of repeated parameter names.
- Raise the limit only if needed. On a VPS set LimitRequestLine in Apache or large_client_header_buffers in Nginx. Keep URLs under about 2,000 characters for compatibility with browsers, proxies and CDNs.
Apache / Nginx (raise URL limit, VPS only)
# Apache 2.4 (server or vhost config, not .htaccess)
LimitRequestLine 16380
LimitRequestFieldSize 16380
# Nginx (http or server block)
large_client_header_buffers 4 16k; How to stop it happening again
- Use POST for anything that carries user-generated or bulk data
- Test redirect rules for loops with a redirect checker
- Keep public URLs short and readable for SEO as well as limits