Error map
rewrite or internal redirection cycle Nginx: [error] rewrite or internal redirection cycle while internally redirecting to "/index.php" (500 Internal Server Error)
Nginx / Apache · layer 3, Edge & web server
Centre: this error. First ring: errors it is linked with (7). Outer ring: what those are linked with. Colours show the layer of a request each error belongs to. Click any dot to re-centre the map on it; hover to follow its connections. The centre dot opens the error page.
Directly related (7)
FastCGI sent in stderr: "Primary script unknown"
Nginx passed a script path to PHP-FPM that PHP-FPM couldn’t find — usually a wrong SCRIPT_FILENAME or root.
Apache: AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary
Rewrite rules loop internally, so Apache aborts with a 500.
Nginx: [info] client prematurely closed connection while reading response header from upstream / access log status 499
The client (browser, mobile app, load balancer) disconnected before Nginx finished the response; Nginx logs status 499.
Laravel on shared hosting: homepage works but every other route returns 404 Not Found
The web server isn't sending requests to `public/index.php`, so only the root path works — the rewrite rules aren't active.
Nginx/Apache: ModSecurity: Access denied with code 403 (phase 2). Matched "Operator GE matched 5 at TX:anomaly_score"
The ModSecurity WAF (OWASP Core Rule Set) blocked the request as suspicious.
Nginx: [error] client intended to send too large body: 5242880 bytes (413 Request Entity Too Large)
A request body exceeded `client_max_body_size` (default 1 MB), so Nginx returned 413 before reaching your app.
Nginx: [error] directory index of "/var/www/html/" is forbidden (403 Forbidden)
A directory was requested but no index file exists (or index is wrong) and autoindex is off, so Nginx returns 403.
Two steps away (21)
HTTP 403 Forbidden
The server understood the request but refuses to authorize it — you (or the server process) are not allowed to access this resour…
HTTP 404 Not Found
The server can’t find anything at the requested URL.
HTTP 502 Bad Gateway
A proxy or gateway (Nginx, load balancer, CDN) got an invalid response — or no response — from the upstream server behind it.
WordPress: 404 Not Found on every page except the homepage (permalinks / .htaccess / Nginx rules)
Pretty permalinks aren’t being routed to index.php — .htaccess is missing/ignored (Apache) or Nginx lacks try_files.
Apache: AH00558: apache2: Could not reliably determine the server's fully qualified domain name
A harmless startup warning: Apache has no global ServerName, so it guessed one from the host’s IP.
Apache: AH00526: Syntax error on line 12 of /etc/apache2/sites-enabled/site.conf: Invalid command 'Foo', perhaps misspelled or defined by a module not included in the server configuration
Apache's config has a syntax problem or a directive from a module that isn't loaded.
HTTP 500 Internal Server Error
The server hit an unexpected condition — usually an unhandled exception or misconfiguration in the application.
HTTP 504 Gateway Timeout
A proxy or gateway waited too long for the upstream server to respond and gave up.
HTTP 499 Client Closed Request (Nginx)
Nginx-specific code logged when the client disconnected before the server finished responding.
Laravel: Symfony\Component\Routing\Exception\RouteNotFoundException: Route [login] not defined
Code called route('name') for a route name that doesn’t exist — very often route('login') from the auth middleware in API-only ap…
Laravel: LogicException: Unable to prepare route [dashboard] for serialization. Uses Closure.
`php artisan route:cache` failed because a route uses a closure, which can't be cached.
Laravel: 404 for /storage/file.jpg — symlink(): No such file or directory / The [public/storage] link already exists
Uploaded files stored in `storage/app/public` aren't reachable because the `public/storage` symlink doesn't exist or points to th…
Cloudflare Error 1020: Access Denied
A Cloudflare firewall/WAF custom rule blocked the request — the visitor’s IP, country, user agent or request pattern matched a bl…
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Nginx (or another server) can’t listen on the port because another process already holds it — often Apache, another Nginx, or a s…
API/app requests get 403 with cf-mitigated: challenge (Bot Fight Mode / challenge on non-browser clients)
Cloudflare is answering API calls, webhooks or mobile-app requests with a challenge page (HTML 403) because bot protection treats…
HTTP 413 Content Too Large (Request Entity Too Large)
The request body is bigger than the server is willing to accept — usually a file upload over the configured limit.
Too many open files (EMFILE)
The process hit its file-descriptor limit — sockets, files and pipes all count.
WordPress: The link you followed has expired
Usually an upload (theme, plugin, media) larger than PHP’s upload/post limits — WordPress receives an empty request and shows thi…
Nginx: [error] open() "/home/user/site/index.html" failed (13: Permission denied), 403 Forbidden
The nginx worker user can't read the requested file or traverse a parent directory.
Browser: Welcome to nginx! If you see this page, the nginx web server is successfully installed and working
Requests are served by the default server block, not your site's block.
Apache: [authz_core:error] AH01630: client denied by server configuration: /var/www/html/
Apache 2.4 authorisation denied access to the directory (403) because no `Require all granted` applies.
Map another error
Popular: 500403400ORA-009331064Critical errorFileNotFoundException assemblyTypeError