AdminsForum
Guide Fix Too Many Redirects in aaPanel - Printable Version

+- AdminsForum (https://adminsforum.com)
+-- Forum: Free & open-source control panels (https://adminsforum.com/Forum-free-open-source-control-panels)
+--- Forum: aaPanel (https://adminsforum.com/Forum-aapanel)
+---- Forum: aaPanel Guides & Tutorials (https://adminsforum.com/Forum-aapanel-guides-tutorials)
+----- Forum: aaPanel Websites & Web Servers Guides (https://adminsforum.com/Forum-aapanel-websites-web-servers-guides)
+----- Thread: Guide Fix Too Many Redirects in aaPanel (/Thread-guide-fix-too-many-redirects-in-aapanel)



Fix Too Many Redirects in aaPanel - DEV - 10-15-2026

“Too many redirects” means the client kept following redirects without reaching a usable final page. Trace the status and Location of each hop before changing aaPanel, application or proxy settings.

This guide investigates an actual redirect loop, complementing our separate tutorial on creating 301 and 302 rules. We reproduced a two-path loop privately and verified the corrected chain. No real website redirects or CDN settings were changed.

   
Original AdminsForum lab results, formatted as a transcript rather than a screenshot.

1. Record the starting URL and expected destination
Write down the hostname, scheme, path, time and timezone. Which final page should load? Does the failure happen before login, after login or only in one browser? Remove private query values before sharing examples.

Do not repeatedly submit forms to investigate redirects; use a safe read-only page. A redirect chain can change request behavior, so a simple GET test does not prove a login, upload or payment flow works correctly.

2. Inspect one response before following it
In browser developer tools open Network, preserve the request log and inspect each response status and Location. Watch for repeated hostnames, paths or HTTP/HTTPS changes. Do not share authenticated network captures or raw cookie values.

An optional safe GET check on your own site is:
Code:
curl -sS --max-time 15 -D - -o /dev/null \   https://example.com/safe-page
This prints headers and discards the body without automatically following the redirect. Inspect Location rather than only the 301 or 302 status. Replace the example with your own safe URL. Headers can contain cookies or private destinations, so redact before sharing.

3. Follow a small, bounded chain
After checking that the destination is expected, use a limited follow test:
Code:
curl -sS -L --max-redirs 5 --max-time 20 \   -D - -o /dev/null \   -w 'Final HTTP %{http_code} | redirects %{num_redirects}\n' \   https://example.com/safe-page
The redirect and time limits prevent an unbounded diagnostic run. A redirect-limit failure alone is not proof of a cycle: a long finite chain can also exceed the chosen limit. Inspect the actual repeated destinations. Do not add credentials, use --location-trusted or turn off TLS validation for this check.

4. What our private test demonstrated
A separate Nginx 1.30.5 instance listened only on the lab's loopback interface. Its two exact paths initially behaved like this:
Code:
/loop-a -> 302 /loop-b /loop-b -> 302 /loop-a
A first-hop check returned 302. A second diagnostic followed at most three redirects and stopped with curl exit 47, reporting that the redirect maximum had been reached. Its captured Location headers repeated the two paths, proving a cycle in this test.

We then changed only the private /loop-b handler to return a fixed test message. A new bounded request followed one redirect, reached HTTP 200 and contained the expected message:
Code:
/loop-a -> 302 /loop-b -> 200
These were temporary redirects in a loopback HTTP experiment. We did not simulate TLS, a CDN, cached permanent redirects or an authenticated application. The private listener was stopped and its PID file disappeared. The main Nginx configuration hash stayed unchanged, and the normal HTTPS website returned 200 afterward.

5. Match the chain to the responsible layer
In aaPanel inspect the affected site's redirect rules and SSL/HTTPS settings. Our tested panel version exposes redirect management through Website → Conf → Redirect; labels can differ. Record existing values before editing.

Also inspect the application's configured public URL, canonical-host logic and redirect plugins. If a CDN or load balancer is present, review its redirect rules and how it connects to the origin. Two layers can each look reasonable in isolation while sending users back to one another.

Use the website access log to correlate the paths and times. Repeated external 302 responses may be normal-looking successful log entries, so the error log need not contain a fatal error. An internal Nginx rewrite cycle is a different condition from the client-visible two-URL loop tested here.

6. Recognize common conflicting patterns
  • Hostname conflict: one rule sends example.com to www.example.com while another sends it back. Choose the intended canonical host and identify which rule contradicts it.
  • Scheme conflict: one layer enforces HTTPS while another sends the request back to HTTP. Correct the contradictory configuration while retaining the intended secure final URL.
  • Self-redirect: a rule sends a URL to the same effective URL after normalizing its hostname or path. Compare the complete destination, not just the text shown in a panel label.
  • Login redirects: the application may consider the user unauthenticated on each request. Investigate sessions, cookies and application logic separately rather than removing login protection.

7. Check proxy HTTPS handling without weakening security
Cloudflare documents a particular loop when Flexible mode sends HTTP to an origin that always redirects HTTP to HTTPS. If that is your demonstrated configuration, plan valid origin HTTPS and the appropriate encrypted origin mode; do not merely switch off TLS protections to hide the symptom.

For any reverse proxy, ensure the application recognizes the original public scheme through its supported trusted-proxy setup. Do not trust arbitrary client-supplied forwarded headers or copy a wildcard proxy-trust setting. Review your actual proxy chain and framework documentation.

This section explains possible configurations; our private test did not change or validate a Cloudflare zone.

8. Apply one narrow correction and verify
Back up the affected configuration and record the rule, scope and previous destination. Correct the contradictory rule rather than adding another redirect to compensate. Validate Nginx configuration before applying a file edit. If validation fails, restore the backup and investigate the reported problem.

Repeat the first-hop and bounded-chain checks. Confirm the final hostname, scheme, path and page content are the intended ones. Then check relevant query strings, a nearby path and any affected login flow using controlled data. Do not claim success just because the redirect count is smaller.

Browsers or other layers can retain cached redirects. Compare a fresh command-line request with browser behavior before adding more rules. Clear only the relevant test cache when justified; clearing cookies can sign a user out and does not repair a conflicting server rule. Keep a rollback path if another route breaks.

When requesting support
Provide the safe starting URL, intended destination, redacted status/Location chain, time, proxy layout and recent changes. Exclude private tokens, session cookies and sensitive query strings.

Related guides
Create and verify 301 and 302 redirects in aaPanel
Inspect website logs
Investigate PHP session-storage failures

Technical references
curl redirect and header options
Nginx rewrite and redirect module
Cloudflare redirect-loop troubleshooting