{"id":1464,"date":"2026-10-19T22:30:15","date_gmt":"2026-10-19T22:30:15","guid":{"rendered":"https:\/\/www.ahosting.net\/blog\/?p=1464"},"modified":"2026-10-20T16:35:06","modified_gmt":"2026-10-20T16:35:06","slug":"err-too-many-redirects-wordpress","status":"publish","type":"post","link":"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/","title":{"rendered":"ERR_TOO_MANY_REDIRECTS in WordPress: Find the Looping Rule With curl"},"content":{"rendered":"\n<script type=\"application\/ld+json\">{\"@context\": \"https:\/\/schema.org\", \"@type\": \"FAQPage\", \"mainEntity\": [{\"@type\": \"Question\", \"name\": \"How do I fix ERR_TOO_MANY_REDIRECTS on a WordPress site?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Specifically, run curl -sIL on the failing URL and read the Location headers. The two URLs that repeat name the two layers fighting, and the fix is to make one layer stop redirecting.\"}}, {\"@type\": \"Question\", \"name\": \"Why does ERR_TOO_MANY_REDIRECTS appear only on wp-admin and the login page in 2026?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Typically because FORCE_SSL_ADMIN is on while WordPress cannot see that the request arrived over HTTPS. The login code redirects to HTTPS, the proxy forwards plain HTTP again, and the loop never ends. The signature table above shows the curl output to expect.\"}}, {\"@type\": \"Question\", \"name\": \"Does a 301 vs 302 status matter when debugging an ERR_TOO_MANY_REDIRECTS loop?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"In practice, it matters for the browser, not for the cause. A browser may remember a permanent redirect, so test with curl or a private window, because curl keeps no cache and shows every hop as the server sends it.\"}}, {\"@type\": \"Question\", \"name\": \"Should an .htaccess rule vs the WordPress address setting force HTTPS in 2026 without an ERR_TOO_MANY_REDIRECTS loop?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Ultimately, use one place only. Apache documents a redirect in a dedicated HTTP virtual host as the cleanest approach, with mod_rewrite as the .htaccess alternative, and a second HTTPS rule in a plugin or proxy is how the loops start.\"}}, {\"@type\": \"Question\", \"name\": \"Will moving to AHosting stop an ERR_TOO_MANY_REDIRECTS loop that started on my old host?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"In fact, not by itself, because the loop comes from redirect rules that travel with the site files and database. Instead, compare the curl chain before and after the move, and check the migration steps in our migration guide before changing any rule.\"}}, {\"@type\": \"Question\", \"name\": \"What should I send AHosting support for an ERR_TOO_MANY_REDIRECTS loop in 2026?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"In particular, send the output of curl -sIL --max-redirs 5 on the failing URL with any Set-Cookie lines removed, plus whether a CDN or proxy sits in front of the site. That output shows which hostnames and schemes repeat, so nobody has to guess the cause.\"}}, {\"@type\": \"Question\", \"name\": \"Can page caching on AHosting hide or cause an ERR_TOO_MANY_REDIRECTS loop in wp-admin?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"In contrast to public pages, a logged-in admin session is uncacheable, so every wp-admin request reaches PHP and the redirect code runs each time. Caching therefore neither causes nor cures that loop, and the fix lives in the redirect rules.\"}}, {\"@type\": \"Question\", \"name\": \"How many redirects does a browser follow before showing ERR_TOO_MANY_REDIRECTS?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Specifically, the Fetch standard stops at 20 redirects and Chromium sets its limit to 20. Command-line curl follows up to 50 by default when you ask it to follow redirects, which is why a loop shows a count of 50 there.\"}}, {\"@type\": \"Question\", \"name\": \"Why does ERR_TOO_MANY_REDIRECTS appear after I set www as the preferred domain?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Notably, WordPress sends non-www requests to the host in its Home URL setting, so a second rule that sends www back to non-www at the DNS panel, proxy or .htaccess makes the two bounce forever. Keep one preferred host in both places.\"}}, {\"@type\": \"Question\", \"name\": \"Can HSTS keep an ERR_TOO_MANY_REDIRECTS loop alive after I fix the server in 2026?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Indeed, a site that sent an HSTS header makes the browser upgrade http:\/\/ URLs for that domain to HTTPS on its own, so an HTTP-based test can behave differently in the browser than in curl. Retest with curl and a fresh private window before changing rules again.\"}}]}<\/script>\n\n\n<div class=\"wp-block-aioseo-table-of-contents\"><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-what-err_too_many_redirects-means-in-wordpress\">What ERR_TOO_MANY_REDIRECTS Means in WordPress<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-why-the-err_too_many_redirects-loop-is-rarely-a-wordpress-bug\">Why the ERR_TOO_MANY_REDIRECTS Loop Is Rarely a WordPress Bug<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-read-the-err_too_many_redirects-chain-with-curl-before-you-change-anything\">Read the ERR_TOO_MANY_REDIRECTS Chain With curl Before You Change Anything<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-the-redirect-loop-signature-table-for-err_too_many_redirects\">The Redirect Loop Signature Table for ERR_TOO_MANY_REDIRECTS<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-cause-1-a-force-https-rule-behind-a-proxy-causes-err_too_many_redirects\">Cause 1: A Force-HTTPS Rule Behind a Proxy Causes ERR_TOO_MANY_REDIRECTS<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-how-wordpress-decides-a-request-is-https\">How WordPress Decides a Request Is HTTPS<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-the-wp-config-php-fix-for-this-err_too_many_redirects-loop\">The wp-config.php Fix for This ERR_TOO_MANY_REDIRECTS Loop<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-the-second-way-out-of-this-err_too_many_redirects-loop\">The Second Way Out of This ERR_TOO_MANY_REDIRECTS Loop<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-cause-2-force_ssl_admin-produces-an-err_too_many_redirects-loop-on-wp-admin-only\">Cause 2: FORCE_SSL_ADMIN Produces an ERR_TOO_MANY_REDIRECTS Loop on wp-admin Only<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-cause-3-a-www-and-non-www-fight-creates-an-err_too_many_redirects-loop\">Cause 3: A www and Non-www Fight Creates an ERR_TOO_MANY_REDIRECTS Loop<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-why-the-scheme-alone-rarely-triggers-this-one\">Why the Scheme Alone Rarely Triggers This One<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-cause-4-two-https-rules-cause-the-last-err_too_many_redirects-pattern\">Cause 4: Two HTTPS Rules Cause the Last ERR_TOO_MANY_REDIRECTS Pattern<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-what-our-err_too_many_redirects-lab-measured\">What Our ERR_TOO_MANY_REDIRECTS Lab Measured<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-a-five-step-err_too_many_redirects-fix-order-that-avoids-guessing\">A Five-Step ERR_TOO_MANY_REDIRECTS Fix Order That Avoids Guessing<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-what-to-record-before-you-ask-for-help-with-err_too_many_redirects\">What to Record Before You Ask for Help With ERR_TOO_MANY_REDIRECTS<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-when-err_too_many_redirects-points-at-something-you-cannot-edit\">When ERR_TOO_MANY_REDIRECTS Points at Something You Cannot Edit<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-err-too-many-redirects-wordpress\">Frequently Asked Questions: ERR_TOO_MANY_REDIRECTS in WordPress<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#faq-fix-err-too-many-redirects-wordpress\">How do I fix ERR_TOO_MANY_REDIRECTS on a WordPress site?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-err-too-many-redirects-only-wp-admin-2026\">Why does ERR_TOO_MANY_REDIRECTS appear only on wp-admin and the login page in 2026?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-err-too-many-redirects-301-vs-302\">Does a 301 vs 302 status matter when debugging an ERR_TOO_MANY_REDIRECTS loop?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-err-too-many-redirects-https-rule-vs-siteurl\">Should an .htaccess rule vs the WordPress address setting force HTTPS in 2026 without an ERR_TOO_MANY_REDIRECTS loop?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-err-too-many-redirects-after-migration-ahosting\">Will moving to AHosting stop an ERR_TOO_MANY_REDIRECTS loop that started on my old host?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-err-too-many-redirects-ahosting-ticket-2026\">What should I send AHosting support for an ERR_TOO_MANY_REDIRECTS loop in 2026?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-err-too-many-redirects-logged-in-cache-ahosting\">Can page caching on AHosting hide or cause an ERR_TOO_MANY_REDIRECTS loop in wp-admin?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-err-too-many-redirects-how-many-redirects-limit\">How many redirects does a browser follow before showing ERR_TOO_MANY_REDIRECTS?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-err-too-many-redirects-www-vs-nonwww\">Why does ERR_TOO_MANY_REDIRECTS appear after I set www as the preferred domain?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-err-too-many-redirects-hsts-browser\">Can HSTS keep an ERR_TOO_MANY_REDIRECTS loop alive after I fix the server in 2026?<\/a><\/li><\/ul><\/li><\/ul><\/div>\n\n\n<div class=\"ah-tldr\">\n  <span class=\"ah-tldr-badge\">TL;DR<\/span>\n  <p>ERR_TOO_MANY_REDIRECTS means two layers keep sending the browser to each other. Run curl -sIL once, read the Location headers, and the repeating pair names the layer to fix.<\/p>\n<\/div>\n\n\n\n<figure class=\"wp-block-audio\"><audio preload=\"none\" controls src=\"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/PODCAST-err-too-many-redirects-wordpress.m4a\"><\/audio><figcaption class=\"wp-element-caption\">isten: an ERR_TOO_MANY_REDIRECTS loop is two rules disagreeing, and the redirect chain shows which two. By Matt Chrust, Director of Business Development, AHosting.<\/figcaption><\/figure>\n\n\n\n<h2 id=\"aioseo-what-err_too_many_redirects-means-in-wordpress\" class=\"wp-block-heading\">What ERR_TOO_MANY_REDIRECTS Means in WordPress<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ERR_TOO_MANY_REDIRECTS is the browser telling you that a request was redirected, and the redirect was redirected, and so on until it gave up. The message is not a WordPress error. WordPress is one of the two parties in the argument, and finding the other party is the whole job.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The give-up point is a published number. The Fetch standard says that when a request&#8217;s redirect count reaches 20 the browser returns a network error (<a href=\"https:\/\/fetch.spec.whatwg.org\/#http-redirect-fetch\" target=\"_blank\" rel=\"noopener\">Fetch standard, HTTP-redirect fetch<\/a>), and Chromium sets its own limit to 20 (<a href=\"https:\/\/chromium.googlesource.com\/chromium\/src\/+\/main\/net\/url_request\/url_request.h\" target=\"_blank\" rel=\"noopener\">Chromium url_request.h<\/a>).<\/p>\n\n\n\n<h3 id=\"aioseo-why-the-err_too_many_redirects-loop-is-rarely-a-wordpress-bug\" class=\"wp-block-heading\">Why the ERR_TOO_MANY_REDIRECTS Loop Is Rarely a WordPress Bug<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A loop needs two rules that each think they are right. One says the canonical address is HTTPS, the other cannot tell that the visitor already arrived over HTTPS. Or one says www, and another says non-www. WordPress ships with parts of both rules, which is why the loop looks like a WordPress problem, but the second rule is almost always something you or a layer in front of the site added.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"ah-yt\" data-id=\"jfeftVY3lmM\" data-title=\"ERR_TOO_MANY_REDIRECTS in WordPress: Find the Looping Rule (2026)\"><img src=\"https:\/\/i.ytimg.com\/vi\/jfeftVY3lmM\/hqdefault.jpg\" alt=\"\" width=\"480\" height=\"360\" loading=\"lazy\" decoding=\"async\"><button type=\"button\" class=\"ah-yt-play\" aria-label=\"Play video: ERR_TOO_MANY_REDIRECTS in WordPress: Find the Looping Rule (2026)\"><span aria-hidden=\"true\"><\/span><\/button><\/div>\n<\/div><\/figure>\n\n\n\n<h2 id=\"aioseo-read-the-err_too_many_redirects-chain-with-curl-before-you-change-anything\" class=\"wp-block-heading\">Read the ERR_TOO_MANY_REDIRECTS Chain With curl Before You Change Anything<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Do not start by disabling plugins. Start by looking at the chain, because the chain tells you which of four causes you have. In a terminal, run <code>curl -sIL --max-redirs 5 https:\/\/example.com\/wp-admin\/<\/code>, replacing the address with the failing one. The <code>-I<\/code> flag asks for headers only, <code>-L<\/code> follows redirects, and <code>--max-redirs 5<\/code> stops the output after five hops so you can read it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">curl keeps no cache, so it shows what the server sends today, not what your browser remembers from an hour ago. Read only the <code>Location<\/code> lines. A loop is any URL that shows up twice.<\/p>\n\n\n\n<h3 id=\"aioseo-the-redirect-loop-signature-table-for-err_too_many_redirects\" class=\"wp-block-heading\">The Redirect Loop Signature Table for ERR_TOO_MANY_REDIRECTS<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">We reproduced the first three loops below in a lab and recorded the Location pattern each one prints. The fourth row is the pattern expected when two rules point opposite ways, and we did not reproduce it. Match your curl output to a row, then jump to the section named in the last column.<\/p>\n\n\n\n<figure class=\"wp-block-table ah-ladder\"><table><thead><tr><th>What repeats in the Location lines<\/th><th>Where the loop appears<\/th><th>Likely cause<\/th><th>Section<\/th><\/tr><\/thead><tbody><tr><td>The same <code>https:\/\/<\/code> URL, forever<\/td><td>Every page<\/td><td>A force-HTTPS rule that cannot see HTTPS behind a proxy<\/td><td>Cause 1<\/td><\/tr><tr><td>The same <code>https:\/\/<\/code> URL for <code>\/wp-admin\/<\/code> only<\/td><td>Login and dashboard<\/td><td><code>FORCE_SSL_ADMIN<\/code> with <code>is_ssl()<\/code> false<\/td><td>Cause 2<\/td><\/tr><tr><td><code>https:\/\/www.<\/code> then <code>https:\/\/<\/code> then <code>https:\/\/www.<\/code><\/td><td>Front-end pages<\/td><td>Home URL host and a second rule disagree about www<\/td><td>Cause 3<\/td><\/tr><tr><td><code>http:\/\/<\/code> to <code>https:\/\/<\/code> to <code>http:\/\/<\/code><\/td><td>Every page<\/td><td>Two HTTPS rules in different layers pointing opposite ways<\/td><td>Cause 4<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">The Redirect Loop Signature Table: four ERR_TOO_MANY_REDIRECTS loop patterns and where to look first.<\/figcaption><\/figure>\n\n\n\n<h2 id=\"aioseo-cause-1-a-force-https-rule-behind-a-proxy-causes-err_too_many_redirects\" class=\"wp-block-heading\">Cause 1: A Force-HTTPS Rule Behind a Proxy Causes ERR_TOO_MANY_REDIRECTS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is the loop to rule out first whenever a CDN or reverse proxy sits in front of the site, and it is the one the diagram below shows. A CDN or reverse proxy accepts the visitor over HTTPS, then talks to your server over plain HTTP. A force-HTTPS rule at the origin sees an HTTP request, answers with a 301 to the HTTPS address, and the visitor comes straight back to the proxy. The origin never learns the visitor was already secure.<\/p>\n\n\n\n<div class=\"ah-infographic\">\n<svg viewBox=\"0 0 720 300\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-label=\"Diagram of an ERR_TOO_MANY_REDIRECTS loop: the browser reaches a proxy over HTTPS, the proxy forwards plain HTTP to WordPress, and WordPress answers with a redirect to HTTPS, which sends the browser straight back to the proxy.\">\n<title>How a TLS-terminating proxy turns a force-HTTPS rule into an ERR_TOO_MANY_REDIRECTS loop<\/title>\n<desc>Three boxes in a row: Browser, Proxy or CDN, WordPress origin. Arrows show HTTPS from browser to proxy, plain HTTP from proxy to origin, and a 301 to HTTPS coming back to the browser, repeating until the browser stops at its redirect limit.<\/desc>\n<rect x=\"20\" y=\"100\" width=\"170\" height=\"80\" rx=\"10\" fill=\"#eff6ff\" stroke=\"#2563eb\" stroke-width=\"2\"\/>\n<text x=\"105\" y=\"135\" text-anchor=\"middle\" font-size=\"18\" font-weight=\"700\" fill=\"#1e3a8a\">Browser<\/text>\n<text x=\"105\" y=\"160\" text-anchor=\"middle\" font-size=\"13\" fill=\"#1e3a8a\">asks for https:\/\/<\/text>\n<rect x=\"275\" y=\"100\" width=\"170\" height=\"80\" rx=\"10\" fill=\"#eff6ff\" stroke=\"#2563eb\" stroke-width=\"2\"\/>\n<text x=\"360\" y=\"135\" text-anchor=\"middle\" font-size=\"18\" font-weight=\"700\" fill=\"#1e3a8a\">Proxy or CDN<\/text>\n<text x=\"360\" y=\"160\" text-anchor=\"middle\" font-size=\"13\" fill=\"#1e3a8a\">ends TLS here<\/text>\n<rect x=\"530\" y=\"100\" width=\"170\" height=\"80\" rx=\"10\" fill=\"#eff6ff\" stroke=\"#2563eb\" stroke-width=\"2\"\/>\n<text x=\"615\" y=\"135\" text-anchor=\"middle\" font-size=\"18\" font-weight=\"700\" fill=\"#1e3a8a\">WordPress<\/text>\n<text x=\"615\" y=\"160\" text-anchor=\"middle\" font-size=\"13\" fill=\"#1e3a8a\">is_ssl() is false<\/text>\n<line x1=\"190\" y1=\"125\" x2=\"268\" y2=\"125\" stroke=\"#2563eb\" stroke-width=\"3\"\/>\n<polygon points=\"275,125 265,119 265,131\" fill=\"#2563eb\"\/>\n<text x=\"232\" y=\"115\" text-anchor=\"middle\" font-size=\"12\" fill=\"#1e3a8a\">HTTPS<\/text>\n<line x1=\"445\" y1=\"125\" x2=\"523\" y2=\"125\" stroke=\"#2563eb\" stroke-width=\"3\"\/>\n<polygon points=\"530,125 520,119 520,131\" fill=\"#2563eb\"\/>\n<text x=\"487\" y=\"115\" text-anchor=\"middle\" font-size=\"12\" fill=\"#1e3a8a\">plain HTTP<\/text>\n<path d=\"M 615 180 L 615 250 L 105 250 L 105 188\" fill=\"none\" stroke=\"#dc2626\" stroke-width=\"3\"\/>\n<polygon points=\"105,181 99,191 111,191\" fill=\"#dc2626\"\/>\n<text x=\"360\" y=\"240\" text-anchor=\"middle\" font-size=\"14\" font-weight=\"700\" fill=\"#b91c1c\">301 to https:\/\/ &#8230; and the browser starts again<\/text>\n<text x=\"360\" y=\"285\" text-anchor=\"middle\" font-size=\"13\" fill=\"#475569\">After 20 redirects the browser gives up and shows ERR_TOO_MANY_REDIRECTS<\/text>\n<\/svg>\n<\/div>\n\n\n\n<h3 id=\"aioseo-how-wordpress-decides-a-request-is-https\" class=\"wp-block-heading\">How WordPress Decides a Request Is HTTPS<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress reads two server variables. The function <code>is_ssl()<\/code> returns true when <code>$_SERVER['HTTPS']<\/code> is <code>on<\/code> or <code>1<\/code>, or when no HTTPS variable exists and the port is 443 (<a href=\"https:\/\/github.com\/WordPress\/wordpress-develop\/blob\/7.1.3\/src\/wp-includes\/load.php#L1659-L1673\" target=\"_blank\" rel=\"noopener\">WordPress 7.1.3, load.php lines 1659 to 1673<\/a>). It does not read the <code>X-Forwarded-Proto<\/code> header a proxy adds. Behind a proxy that ends TLS, both variables describe the plain HTTP leg, so <code>is_ssl()<\/code> is false on every request.<\/p>\n\n\n\n<h3 id=\"aioseo-the-wp-config-php-fix-for-this-err_too_many_redirects-loop\" class=\"wp-block-heading\">The wp-config.php Fix for This ERR_TOO_MANY_REDIRECTS Loop<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The WordPress developer documentation describes exactly this case: a site behind a reverse proxy that provides SSL, itself hosted without SSL, sends requests into an infinite redirect loop, and the remedy is to configure WordPress to recognize <code>HTTP_X_FORWARDED_PROTO<\/code> (<a href=\"https:\/\/developer.wordpress.org\/advanced-administration\/security\/https\/\" target=\"_blank\" rel=\"noopener\">Administration Over SSL<\/a>). In practice that means a few lines in <code>wp-config.php<\/code>, above the <code>require_once<\/code> for <code>wp-settings.php<\/code>: <code>if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) &amp;&amp; 'https' === $_SERVER['HTTP_X_FORWARDED_PROTO'] ) { $_SERVER['HTTPS'] = 'on'; }<\/code>. Our lab used the same logic and it turned 51 requests into one (results below). Only use it when every request really arrives through your proxy, because a client that reaches the origin directly could send that header itself. Some proxies send a comma-separated list such as <code>http,https<\/code>, which the same page warns about, so test the value you actually receive.<\/p>\n\n\n\n<h3 id=\"aioseo-the-second-way-out-of-this-err_too_many_redirects-loop\" class=\"wp-block-heading\">The Second Way Out of This ERR_TOO_MANY_REDIRECTS Loop<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The header trick is one fix, and changing the connection is the other. If the proxy connects to your server over HTTPS instead of plain HTTP, the web server itself reports a secure request, so <code>is_ssl()<\/code> is true with no code change at all. Which of the two you choose depends on whether the origin has a valid certificate for the proxy to connect to, and on who controls the proxy settings. Either way the goal is identical: the layer that decides to redirect must be told what the visitor actually used.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On Cloudflare this choice has a name: the SSL\/TLS encryption mode. <strong>Flexible<\/strong> is the mode that produces this loop, because Cloudflare serves the visitor over HTTPS and then fetches from your origin over plain HTTP, which is exactly the arrangement the diagram above shows. In the Cloudflare dashboard, select the site, open <strong>SSL\/TLS<\/strong>, then <strong>Overview<\/strong>, and change the mode from <strong>Flexible<\/strong> to <strong>Full (strict)<\/strong>. Full (strict) requires a valid certificate on the origin, while <strong>Full<\/strong> accepts a self-signed one and still encrypts the leg to your server. Change the mode first and retest with curl before you edit <code>wp-config.php<\/code>, because the header fix ends the loop while leaving the connection to your server unencrypted.<\/p>\n\n\n\n<h2 id=\"aioseo-cause-2-force_ssl_admin-produces-an-err_too_many_redirects-loop-on-wp-admin-only\" class=\"wp-block-heading\">Cause 2: FORCE_SSL_ADMIN Produces an ERR_TOO_MANY_REDIRECTS Loop on wp-admin Only<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If the public pages load and only <code>\/wp-admin\/<\/code> or <code>wp-login.php<\/code> loops, suspect this cause first. Two places in core redirect to HTTPS when <code>FORCE_SSL_ADMIN<\/code> is on and <code>is_ssl()<\/code> is false. The login file does it at line 15 of <code>wp-login.php<\/code>, and <code>auth_redirect()<\/code> does it for dashboard URLs at lines 1281 and 1293 of <code>pluggable.php<\/code> (WordPress 7.1.3).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The front end is untouched because neither code path runs there. That asymmetry is the clue, and it is why people lose an afternoon editing public-page rules that were never involved. The fix is the same as Cause 1, since both come from <code>is_ssl()<\/code> being false behind a TLS-terminating layer: make the HTTPS variable reflect the real request before <code>wp-settings.php<\/code> loads.<\/p>\n\n\n\n<h2 id=\"aioseo-cause-3-a-www-and-non-www-fight-creates-an-err_too_many_redirects-loop\" class=\"wp-block-heading\">Cause 3: A www and Non-www Fight Creates an ERR_TOO_MANY_REDIRECTS Loop<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress sends the browser to the host in its Home URL setting. The canonical redirect takes its target host from <code>home_url()<\/code> (<code>canonical.php<\/code> lines 602 to 605), and it only acts when the difference is no-www versus yes-www (lines 731 to 738). If your Home URL says <code>www<\/code> and another layer sends <code>www<\/code> traffic to the bare domain, the two bounce between hosts.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The second rule can be a redirect in a DNS or proxy panel that was set up before the WordPress address changed, or the reverse. The signature is easy to spot in curl: the Location lines alternate between two hostnames. Pick one host, then set that host in the Home URL setting and in every rule that mentions it.<\/p>\n\n\n\n<h3 id=\"aioseo-why-the-scheme-alone-rarely-triggers-this-one\" class=\"wp-block-heading\">Why the Scheme Alone Rarely Triggers This One<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The canonical comparison arrays hold host, path, port and query, and no scheme (<code>canonical.php<\/code> lines 740 to 750). So a scheme mismatch by itself does not make <code>redirect_canonical()<\/code> loop. It also runs only on the front end, because the function returns early when <code>is_admin()<\/code> is true (line 63), which matches the pattern that a www loop breaks public pages while the dashboard keeps working.<\/p>\n\n\n\n<h2 id=\"aioseo-cause-4-two-https-rules-cause-the-last-err_too_many_redirects-pattern\" class=\"wp-block-heading\">Cause 4: Two HTTPS Rules Cause the Last ERR_TOO_MANY_REDIRECTS Pattern<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A site can end up with a force-HTTPS rule in <code>.htaccess<\/code>, another from a security or SSL plugin, and a third in the proxy panel. When they all agree, nobody notices. When one of them uses a different host or a different port, the browser alternates between two targets.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Apache&#8217;s own documentation says a redirect in a dedicated HTTP virtual host is the cleanest approach to forcing HTTPS, with a mod_rewrite alternative for <code>.htaccess<\/code> use (<a href=\"https:\/\/httpd.apache.org\/docs\/current\/rewrite\/avoid.html\" target=\"_blank\" rel=\"noopener\">Apache mod_rewrite: when not to use it<\/a>). The practical rule that follows is simple: one force-HTTPS rule, in one place. Where you cannot edit the virtual host, the single rule lives in <code>.htaccess<\/code> or in the plugin, never both. Our guide to <a href=\"https:\/\/www.ahosting.net\/blog\/free-ssl-and-domain-management-hosting\/\">free SSL and domain management<\/a> covers where certificates and domain redirects normally sit.<\/p>\n\n\n\n<h2 id=\"aioseo-what-our-err_too_many_redirects-lab-measured\" class=\"wp-block-heading\">What Our ERR_TOO_MANY_REDIRECTS Lab Measured<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We reproduced three of the loops on 19 October 2026 so the numbers in this guide are first-hand. The setup was a PHP 8.5.10 origin that uses WordPress 7.1.3&#8217;s own <code>is_ssl()<\/code> and the redirect branches quoted above, a small TLS edge that ends HTTPS and forwards plain HTTP with <code>X-Forwarded-Proto: https<\/code>, and curl following redirects. It is a lab on one machine, not a customer site, and it is labeled that way so nobody reads it as production data.<\/p>\n\n\n\n<figure class=\"wp-block-table ah-ladder\"><table><thead><tr><th>Lab case<\/th><th>Redirects followed<\/th><th>Requests the origin logged<\/th><th>Outcome<\/th><\/tr><\/thead><tbody><tr><td>Force-HTTPS rule behind the edge<\/td><td>50<\/td><td>51<\/td><td>curl stopped: Maximum (50) redirects followed<\/td><\/tr><tr><td>FORCE_SSL_ADMIN branch on \/wp-admin\/<\/td><td>50<\/td><td>51<\/td><td>Same stop, only on the dashboard path<\/td><\/tr><tr><td>www to non-www edge rule vs canonical host<\/td><td>50<\/td><td>51 (26 non-www, 25 www)<\/td><td>Hosts alternated on every hop<\/td><\/tr><tr><td>Same rule with X-Forwarded-Proto trusted first<\/td><td>0<\/td><td>1<\/td><td>HTTP 200 on the first request<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Lab results, 19 October 2026: three loops reproduced and one fixed with the X-Forwarded-Proto line.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Two things stand out. Each loop costs the origin one request per hop, so a browser that stops at 20 redirects will have cost the origin about 21 requests, which is a quiet source of server load on a busy site. And the fix for the proxy case changed the result from 51 requests to one.<\/p>\n\n\n\n<h2 id=\"aioseo-a-five-step-err_too_many_redirects-fix-order-that-avoids-guessing\" class=\"wp-block-heading\">A Five-Step ERR_TOO_MANY_REDIRECTS Fix Order That Avoids Guessing<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Run <code>curl -sIL --max-redirs 5<\/code> on the failing URL and write down the repeating Location values.<\/li>\n\n\n\n<li>Match them to the signature table, then change one rule only.<\/li>\n\n\n\n<li>Retest with curl, then in a private window, so a remembered redirect or an HSTS upgrade does not hide your fix (<a href=\"https:\/\/hstspreload.org\/\" target=\"_blank\" rel=\"noopener\">how HSTS works<\/a>).<\/li>\n\n\n\n<li>If the loop only appears after a move, compare the redirect rules on the old and new site, starting with our <a href=\"https:\/\/www.ahosting.net\/blog\/migrate-wordpress-to-a-new-host\/\">WordPress migration steps<\/a>.<\/li>\n\n\n\n<li>Only now disable plugins one at a time, because a plugin that adds a redirect will show up as a rule in the chain.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">If you run a CDN in front of the site, our guide to <a href=\"https:\/\/www.ahosting.net\/blog\/litespeed-cache-and-cloudflare\/\">LiteSpeed Cache and a CDN together<\/a> lists the settings that tend to collide with an HTTPS redirect.<\/p>\n\n\n\n<style>\n.ahrdl-tool{border:1px solid #bfdbfe;background:#eff6ff;border-radius:10px;padding:20px;margin:24px 0}\n.ahrdl-tool h3{margin:0 0 10px;font-size:20px}\n.ahrdl-tool label{display:block;font-weight:600;margin:12px 0 4px}\n.ahrdl-tool select{width:100%;padding:8px;border:1px solid #93c5fd;border-radius:6px;background:#fff}\n.ahrdl-tool .ahrdl-btn{margin-top:14px;cursor:pointer}\n.ahrdl-tool .ahrdl-out{margin-top:16px;padding:12px;background:#fff;border-left:4px solid #2563eb;border-radius:4px}\n<\/style>\n<div class=\"ahrdl-tool\" data-ahrdl=\"redirect-loop-diagnoser\">\n  <h3>ERR_TOO_MANY_REDIRECTS Loop Diagnoser<\/h3>\n  <label for=\"ahrdl-symptom\">Where does the loop appear?<\/label>\n  <select id=\"ahrdl-symptom\">\n    <option value=\"all\">Every page, including the front page<\/option>\n    <option value=\"admin\">Only wp-admin and the login page<\/option>\n    <option value=\"host\">The address alternates between www and non-www<\/option>\n  <\/select>\n  <label for=\"ahrdl-layer\">What sits in front of WordPress?<\/label>\n  <select id=\"ahrdl-layer\">\n    <option value=\"proxy\">A CDN or reverse proxy that handles HTTPS<\/option>\n    <option value=\"none\">Nothing, the web server answers directly<\/option>\n  <\/select>\n  <div class=\"wp-block-button\"><a class=\"ahrdl-btn wp-block-button__link wp-element-button\" href=\"#ahrdl-result\" id=\"ahrdl-go\">Show the likely cause<\/a><\/div>\n  <div class=\"ahrdl-out\" id=\"ahrdl-result\" aria-live=\"polite\">Pick both answers, then press the button.<\/div>\n<\/div>\n<script>(function(){\ndocument.addEventListener('DOMContentLoaded', function(){\nvar root = document.querySelector('[data-ahrdl]');\nif (!root) { return; }\nvar id = root.getAttribute('data-ahrdl');\nvar go = document.getElementById('ahrdl-go');\nvar a = document.getElementById('ahrdl-symptom');\nvar b = document.getElementById('ahrdl-layer');\nvar out = document.getElementById('ahrdl-result');\nif (!go) { return; }\nif (!a) { return; }\nif (!b) { return; }\nif (!out) { return; }\nvar M = {};\nM['all|proxy'] = 'Likely cause: a force-HTTPS rule in WordPress, a plugin or .htaccess that sees plain HTTP because the proxy ends TLS. Fix: make WordPress trust X-Forwarded-Proto (see the wp-config.php snippet above), or switch the proxy to an HTTPS connection to the origin.';\nM['all|none'] = 'Likely cause: two HTTPS redirects in different places, for example an .htaccess rule plus a plugin. Fix: keep exactly one force-HTTPS rule and remove the other.';\nM['admin|proxy'] = 'Likely cause: FORCE_SSL_ADMIN is on and is_ssl() is false behind the proxy. Fix: set $_SERVER[HTTPS] to on when X-Forwarded-Proto is https, in wp-config.php before wp-settings.php loads.';\nM['admin|none'] = 'Likely cause: FORCE_SSL_ADMIN is on but the web server is not reporting HTTPS to PHP, or an HTTPS rule elsewhere disagrees. Run curl -sIL on \/wp-admin\/ and read the repeating Location value.';\nM['host|proxy'] = 'Likely cause: WordPress sends one host to the Home URL host while the proxy or DNS panel sends the other host back. Fix: keep one preferred host, in the Home URL setting and in the proxy rule.';\nM['host|none'] = 'Likely cause: the Home URL host and an .htaccess host rule disagree about www. Fix: make the .htaccess rule send visitors to the same host as the Home URL setting.';\ngo.addEventListener('click', function(ev){\nev.preventDefault();\nvar key = a.value + '|' + b.value;\nvar msg = M[key];\nif (!msg) { out.textContent = 'Run curl -sIL on the failing URL and read the repeating Location headers.'; return; }\nout.textContent = msg;\n});\n});\n})();<\/script>\n\n\n\n<h2 id=\"aioseo-what-to-record-before-you-ask-for-help-with-err_too_many_redirects\" class=\"wp-block-heading\">What to Record Before You Ask for Help With ERR_TOO_MANY_REDIRECTS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A loop report is only as useful as the evidence attached to it. Collect four things first, because each one rules out a cause in seconds. The exact URL that loops, copied from the address bar. The full output of <code>curl -sIL --max-redirs 5<\/code> for that URL. Whether a CDN, proxy or DNS-level redirect service sits in front of the site. And the last change made before it started, whether that was a migration, a new SSL plugin, or an edit to the WordPress Address or Site Address fields.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That last item matters more than it looks. A loop that begins right after a change was almost certainly caused by that change, and reversing it is faster than any diagnosis. The signature table then tells you what you reversed, which is how you avoid repeating it.<\/p>\n\n\n\n<h2 id=\"aioseo-when-err_too_many_redirects-points-at-something-you-cannot-edit\" class=\"wp-block-heading\">When ERR_TOO_MANY_REDIRECTS Points at Something You Cannot Edit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Some loops live in a layer you do not control: a proxy panel, a reseller&#8217;s DNS service or a managed-hosting rule. When the curl output names a hostname that your account does not manage, you are done diagnosing and the next step is a ticket with that output attached. If your hosting and TLS arrangement is the open question, our <a href=\"https:\/\/www.ahosting.net\/ssl-certificate.html\">SSL certificate options<\/a> page and the <a href=\"https:\/\/www.ahosting.net\/web-hosting.html\">shared hosting plans<\/a> list what each plan includes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For the hosting side of a WordPress setup, see our <a href=\"https:\/\/www.ahosting.net\/wordpress-hosting.html\">WordPress hosting plans<\/a>. If the loop is already live and the curl output is in front of you, open a ticket with that output, with any Set-Cookie lines removed, and we will look at it with you.<\/p>\n\n\n\n<h2 id=\"faq-err-too-many-redirects-wordpress\" class=\"wp-block-heading\">Frequently Asked Questions: ERR_TOO_MANY_REDIRECTS in WordPress<\/h2>\n\n\n\n<h3 id=\"faq-fix-err-too-many-redirects-wordpress\" class=\"wp-block-heading\">How do I fix ERR_TOO_MANY_REDIRECTS on a WordPress site?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Specifically, run curl -sIL on the failing URL and read the Location headers. The two URLs that repeat name the two layers fighting, and the fix is to make one layer stop redirecting.<\/p>\n\n\n\n<h3 id=\"faq-err-too-many-redirects-only-wp-admin-2026\" class=\"wp-block-heading\">Why does ERR_TOO_MANY_REDIRECTS appear only on wp-admin and the login page in 2026?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Typically because FORCE_SSL_ADMIN is on while WordPress cannot see that the request arrived over HTTPS. The login code redirects to HTTPS, the proxy forwards plain HTTP again, and the loop never ends. The signature table above shows the curl output to expect.<\/p>\n\n\n\n<h3 id=\"faq-err-too-many-redirects-301-vs-302\" class=\"wp-block-heading\">Does a 301 vs 302 status matter when debugging an ERR_TOO_MANY_REDIRECTS loop?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In practice, it matters for the browser, not for the cause. A browser may remember a permanent redirect, so test with curl or a private window, because curl keeps no cache and shows every hop as the server sends it.<\/p>\n\n\n\n<h3 id=\"faq-err-too-many-redirects-https-rule-vs-siteurl\" class=\"wp-block-heading\">Should an .htaccess rule vs the WordPress address setting force HTTPS in 2026 without an ERR_TOO_MANY_REDIRECTS loop?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ultimately, use one place only. Apache documents a redirect in a dedicated HTTP virtual host as the cleanest approach, with mod_rewrite as the .htaccess alternative, and a second HTTPS rule in a plugin or proxy is how the loops start.<\/p>\n\n\n\n<h3 id=\"faq-err-too-many-redirects-after-migration-ahosting\" class=\"wp-block-heading\">Will moving to AHosting stop an ERR_TOO_MANY_REDIRECTS loop that started on my old host?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In fact, not by itself, because the loop comes from redirect rules that travel with the site files and database. Instead, compare the curl chain before and after the move, and check the migration steps in our migration guide before changing any rule.<\/p>\n\n\n\n<h3 id=\"faq-err-too-many-redirects-ahosting-ticket-2026\" class=\"wp-block-heading\">What should I send AHosting support for an ERR_TOO_MANY_REDIRECTS loop in 2026?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In particular, send the output of curl -sIL &#8211;max-redirs 5 on the failing URL with any Set-Cookie lines removed, plus whether a CDN or proxy sits in front of the site. That output shows which hostnames and schemes repeat, so nobody has to guess the cause.<\/p>\n\n\n\n<h3 id=\"faq-err-too-many-redirects-logged-in-cache-ahosting\" class=\"wp-block-heading\">Can page caching on AHosting hide or cause an ERR_TOO_MANY_REDIRECTS loop in wp-admin?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In contrast to public pages, a logged-in admin session is uncacheable, so every wp-admin request reaches PHP and the redirect code runs each time. Caching therefore neither causes nor cures that loop, and the fix lives in the redirect rules.<\/p>\n\n\n\n<h3 id=\"faq-err-too-many-redirects-how-many-redirects-limit\" class=\"wp-block-heading\">How many redirects does a browser follow before showing ERR_TOO_MANY_REDIRECTS?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Specifically, the Fetch standard stops at 20 redirects and Chromium sets its limit to 20. Command-line curl follows up to 50 by default when you ask it to follow redirects, which is why a loop shows a count of 50 there.<\/p>\n\n\n\n<h3 id=\"faq-err-too-many-redirects-www-vs-nonwww\" class=\"wp-block-heading\">Why does ERR_TOO_MANY_REDIRECTS appear after I set www as the preferred domain?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Notably, WordPress sends non-www requests to the host in its Home URL setting, so a second rule that sends www back to non-www at the DNS panel, proxy or .htaccess makes the two bounce forever. Keep one preferred host in both places.<\/p>\n\n\n\n<h3 id=\"faq-err-too-many-redirects-hsts-browser\" class=\"wp-block-heading\">Can HSTS keep an ERR_TOO_MANY_REDIRECTS loop alive after I fix the server in 2026?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Indeed, a site that sent an HSTS header makes the browser upgrade http:\/\/ URLs for that domain to HTTPS on its own, so an HTTP-based test can behave differently in the browser than in curl. Retest with curl and a fresh private window before changing rules again.<\/p>\n\n\n\n<script>\n(function(){\n  document.addEventListener('DOMContentLoaded', function(){\n    var allH3s = document.querySelectorAll('h3.wp-block-heading');\n    var inFaq = false;\n    for (var i = 0; i < allH3s.length; i++) {\n      var h3 = allH3s[i];\n      var prev = h3.previousElementSibling;\n      if (prev) {\n        if (prev.tagName === 'H2') {\n          var prevId = prev.getAttribute('id');\n          if (prevId) {\n            if (prevId.indexOf('faq-') === 0) {\n              inFaq = true;\n            } else {\n              inFaq = false;\n            }\n          }\n        }\n      }\n      if (inFaq) {\n        initToggle(h3);\n      }\n    }\n    function initToggle(h3) {\n      var answer = h3.nextElementSibling;\n      if (!answer) { return; }\n      if (answer.tagName !== 'P') { return; }\n      answer.style.display = 'none';\n      h3.style.cursor = 'pointer';\n      h3.setAttribute('tabindex', '0');\n      h3.setAttribute('aria-expanded', 'false');\n      h3.addEventListener('click', function(){\n        toggleOne(h3, answer);\n      });\n      h3.addEventListener('keydown', function(ev){\n        if (ev.key === 'Enter') { toggleOne(h3, answer); }\n        if (ev.key === ' ') { ev.preventDefault(); toggleOne(h3, answer); }\n      });\n    }\n    function toggleOne(h3, answer) {\n      var open = h3.getAttribute('aria-expanded') === 'true';\n      if (open) {\n        answer.style.display = 'none';\n        h3.setAttribute('aria-expanded', 'false');\n      } else {\n        answer.style.display = 'block';\n        h3.setAttribute('aria-expanded', 'true');\n      }\n    }\n  });\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>TL;DR ERR_TOO_MANY_REDIRECTS means two layers keep sending the browser to each other. Run curl -sIL once, read the Location headers, and the repeating pair names the layer to fix. What ERR_TOO_MANY_REDIRECTS Means in WordPress ERR_TOO_MANY_REDIRECTS is the browser telling you that a request was redirected, and the redirect was redirected, and so on until it [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1465,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[8],"tags":[262,316,317,110,27,113,117,318],"class_list":["post-1464","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress","tag-https","tag-redirect-loop","tag-rr_too_many_redirects","tag-shared-hosting","tag-wordpress","tag-wordpress-errors","tag-wordpress-troubleshooting","tag-wp-admin"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"ERR_TOO_MANY_REDIRECTS means two rules keep redirecting each other. Read the curl chain, match one of four loop patterns, and change a single rule.\" \/>\n\t<meta name=\"robots\" content=\"max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n\t<meta name=\"author\" content=\"Matt Chrust\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"AHosting Blog | WordPress Hosting Tips &amp; Guides\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"ERR_TOO_MANY_REDIRECTS in WordPress: Fix the Loop | AHosting\" \/>\n\t\t<meta property=\"og:description\" content=\"ERR_TOO_MANY_REDIRECTS means two rules keep redirecting each other. Read the curl chain, match one of four loop patterns, and change a single rule.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/err-too-many-redirects-wordpress-ahosting.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/err-too-many-redirects-wordpress-ahosting.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-10-19T22:30:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-10-20T16:35:06+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@ahostingdotnet\" \/>\n\t\t<meta name=\"twitter:title\" content=\"ERR_TOO_MANY_REDIRECTS in WordPress: Fix the Loop | AHosting\" \/>\n\t\t<meta name=\"twitter:description\" content=\"ERR_TOO_MANY_REDIRECTS means two rules keep redirecting each other. Read the curl chain, match one of four loop patterns, and change a single rule.\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@ahostingdotnet\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/err-too-many-redirects-wordpress-ahosting.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/err-too-many-redirects-wordpress\\\/#article\",\"name\":\"ERR_TOO_MANY_REDIRECTS in WordPress: Fix the Loop | AHosting\",\"headline\":\"ERR_TOO_MANY_REDIRECTS in WordPress: Find the Looping Rule With curl\",\"author\":{\"@type\":\"Person\",\"name\":\"Matt Chrust\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/author\\\/matt-chrust\\\/\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/err-too-many-redirects-wordpress-ahosting.jpg\",\"width\":1200,\"height\":675,\"caption\":\"ERR_TOO_MANY_REDIRECTS: read the Location headers once and the repeating pair names the layer to fix. By Matt Chrust, Director of Business Development, AHosting.\"},\"datePublished\":\"2026-10-19T22:30:15+00:00\",\"dateModified\":\"2026-10-20T16:35:06+00:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/err-too-many-redirects-wordpress\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/err-too-many-redirects-wordpress\\\/#webpage\"},\"articleSection\":\"WordPress, HTTPS, redirect loop, rr_too_many_redirects, Shared Hosting, WordPress, WordPress errors, WordPress troubleshooting, wp-admin\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/err-too-many-redirects-wordpress\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/category\\\/wordpress\\\/#listItem\",\"name\":\"WordPress\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/category\\\/wordpress\\\/#listItem\",\"position\":2,\"name\":\"WordPress\",\"item\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/category\\\/wordpress\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/err-too-many-redirects-wordpress\\\/#listItem\",\"name\":\"ERR_TOO_MANY_REDIRECTS in WordPress: Find the Looping Rule With curl\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/err-too-many-redirects-wordpress\\\/#listItem\",\"position\":3,\"name\":\"ERR_TOO_MANY_REDIRECTS in WordPress: Find the Looping Rule With curl\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/category\\\/wordpress\\\/#listItem\",\"name\":\"WordPress\"},\"item\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/err-too-many-redirects-wordpress\\\/\"}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/#organization\",\"name\":\"AHosting\",\"description\":\"WordPress Hosting Tips & Guides\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/assets\\\/img\\\/ahosting-logo.svg\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/err-too-many-redirects-wordpress\\\/#organizationLogo\"},\"image\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/err-too-many-redirects-wordpress\\\/#organizationLogo\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/ahostingdotnet\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/author\\\/matt-chrust\\\/#author\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/author\\\/matt-chrust\\\/\",\"name\":\"Matt Chrust\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/err-too-many-redirects-wordpress\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/795895edac1c44589f6c7f5e6bb79df405fbbaac15817bdd387ec57da61731ec?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Matt Chrust\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/err-too-many-redirects-wordpress\\\/#webpage\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/err-too-many-redirects-wordpress\\\/\",\"name\":\"ERR_TOO_MANY_REDIRECTS in WordPress: Fix the Loop | AHosting\",\"description\":\"ERR_TOO_MANY_REDIRECTS means two rules keep redirecting each other. Read the curl chain, match one of four loop patterns, and change a single rule.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/err-too-many-redirects-wordpress\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/author\\\/matt-chrust\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/author\\\/matt-chrust\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/err-too-many-redirects-wordpress-ahosting.jpg\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/err-too-many-redirects-wordpress\\\/#mainImage\",\"width\":1200,\"height\":675,\"caption\":\"ERR_TOO_MANY_REDIRECTS: read the Location headers once and the repeating pair names the layer to fix. By Matt Chrust, Director of Business Development, AHosting.\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/err-too-many-redirects-wordpress\\\/#mainImage\"},\"datePublished\":\"2026-10-19T22:30:15+00:00\",\"dateModified\":\"2026-10-20T16:35:06+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/#website\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/\",\"name\":\"AHosting\",\"description\":\"WordPress Hosting Tips & Guides\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"ERR_TOO_MANY_REDIRECTS in WordPress: Fix the Loop | AHosting","description":"ERR_TOO_MANY_REDIRECTS means two rules keep redirecting each other. Read the curl chain, match one of four loop patterns, and change a single rule.","canonical_url":"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/","robots":"max-snippet:-1, max-image-preview:large, max-video-preview:-1","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/#article","name":"ERR_TOO_MANY_REDIRECTS in WordPress: Fix the Loop | AHosting","headline":"ERR_TOO_MANY_REDIRECTS in WordPress: Find the Looping Rule With curl","author":{"@type":"Person","name":"Matt Chrust","url":"https:\/\/www.ahosting.net\/blog\/author\/matt-chrust\/"},"publisher":{"@id":"https:\/\/www.ahosting.net\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/err-too-many-redirects-wordpress-ahosting.jpg","width":1200,"height":675,"caption":"ERR_TOO_MANY_REDIRECTS: read the Location headers once and the repeating pair names the layer to fix. By Matt Chrust, Director of Business Development, AHosting."},"datePublished":"2026-10-19T22:30:15+00:00","dateModified":"2026-10-20T16:35:06+00:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/#webpage"},"isPartOf":{"@id":"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/#webpage"},"articleSection":"WordPress, HTTPS, redirect loop, rr_too_many_redirects, Shared Hosting, WordPress, WordPress errors, WordPress troubleshooting, wp-admin"},{"@type":"BreadcrumbList","@id":"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/#listItem","position":1,"name":"Home","item":"https:\/\/www.ahosting.net\/blog\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/#listItem","name":"WordPress"}},{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/#listItem","position":2,"name":"WordPress","item":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/#listItem","name":"ERR_TOO_MANY_REDIRECTS in WordPress: Find the Looping Rule With curl"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/#listItem","position":3,"name":"ERR_TOO_MANY_REDIRECTS in WordPress: Find the Looping Rule With curl","previousItem":{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/#listItem","name":"WordPress"},"item":"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/"}]},{"@type":"Organization","@id":"https:\/\/www.ahosting.net\/#organization","name":"AHosting","description":"WordPress Hosting Tips & Guides","url":"https:\/\/www.ahosting.net\/","logo":{"@type":"ImageObject","url":"https:\/\/www.ahosting.net\/assets\/img\/ahosting-logo.svg","@id":"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/#organizationLogo"},"image":{"@id":"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/#organizationLogo"},"sameAs":["https:\/\/x.com\/ahostingdotnet"]},{"@type":"Person","@id":"https:\/\/www.ahosting.net\/blog\/author\/matt-chrust\/#author","url":"https:\/\/www.ahosting.net\/blog\/author\/matt-chrust\/","name":"Matt Chrust","image":{"@type":"ImageObject","@id":"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/795895edac1c44589f6c7f5e6bb79df405fbbaac15817bdd387ec57da61731ec?s=96&d=mm&r=g","width":96,"height":96,"caption":"Matt Chrust"}},{"@type":"WebPage","@id":"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/#webpage","url":"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/","name":"ERR_TOO_MANY_REDIRECTS in WordPress: Fix the Loop | AHosting","description":"ERR_TOO_MANY_REDIRECTS means two rules keep redirecting each other. Read the curl chain, match one of four loop patterns, and change a single rule.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.ahosting.net\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/#breadcrumblist"},"author":{"@id":"https:\/\/www.ahosting.net\/blog\/author\/matt-chrust\/#author"},"creator":{"@id":"https:\/\/www.ahosting.net\/blog\/author\/matt-chrust\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/err-too-many-redirects-wordpress-ahosting.jpg","@id":"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/#mainImage","width":1200,"height":675,"caption":"ERR_TOO_MANY_REDIRECTS: read the Location headers once and the repeating pair names the layer to fix. By Matt Chrust, Director of Business Development, AHosting."},"primaryImageOfPage":{"@id":"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/#mainImage"},"datePublished":"2026-10-19T22:30:15+00:00","dateModified":"2026-10-20T16:35:06+00:00"},{"@type":"WebSite","@id":"https:\/\/www.ahosting.net\/#website","url":"https:\/\/www.ahosting.net\/","name":"AHosting","description":"WordPress Hosting Tips & Guides","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.ahosting.net\/#organization"}}]},"og:locale":"en_US","og:site_name":"AHosting Blog | WordPress Hosting Tips &amp; Guides","og:type":"article","og:title":"ERR_TOO_MANY_REDIRECTS in WordPress: Fix the Loop | AHosting","og:description":"ERR_TOO_MANY_REDIRECTS means two rules keep redirecting each other. Read the curl chain, match one of four loop patterns, and change a single rule.","og:url":"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/","og:image":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/err-too-many-redirects-wordpress-ahosting.jpg","og:image:secure_url":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/err-too-many-redirects-wordpress-ahosting.jpg","og:image:width":1200,"og:image:height":675,"article:published_time":"2026-10-19T22:30:15+00:00","article:modified_time":"2026-10-20T16:35:06+00:00","twitter:card":"summary_large_image","twitter:site":"@ahostingdotnet","twitter:title":"ERR_TOO_MANY_REDIRECTS in WordPress: Fix the Loop | AHosting","twitter:description":"ERR_TOO_MANY_REDIRECTS means two rules keep redirecting each other. Read the curl chain, match one of four loop patterns, and change a single rule.","twitter:creator":"@ahostingdotnet","twitter:image":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/err-too-many-redirects-wordpress-ahosting.jpg"},"aioseo_meta_data":{"post_id":"1464","title":"ERR_TOO_MANY_REDIRECTS in WordPress: Fix the Loop | AHosting","description":"ERR_TOO_MANY_REDIRECTS means two rules keep redirecting each other. Read the curl chain, match one of four loop patterns, and change a single rule.","keywords":null,"keyphrases":{"focus":{"keyphrase":"err_too_many_redirects","score":0,"analysis":[]},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-10-19 22:21:54","updated":"2026-10-20 16:37:19","seo_analyzer_scan_date":null,"focus_keyword":"err_too_many_redirects","additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.ahosting.net\/blog\/\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/\" title=\"WordPress\">WordPress<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tERR_TOO_MANY_REDIRECTS in WordPress: Find the Looping Rule With curl\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.ahosting.net\/blog\/"},{"label":"WordPress","link":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/"},{"label":"ERR_TOO_MANY_REDIRECTS in WordPress: Find the Looping Rule With curl","link":"https:\/\/www.ahosting.net\/blog\/err-too-many-redirects-wordpress\/"}],"_links":{"self":[{"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/posts\/1464","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/comments?post=1464"}],"version-history":[{"count":3,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/posts\/1464\/revisions"}],"predecessor-version":[{"id":1470,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/posts\/1464\/revisions\/1470"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/media\/1465"}],"wp:attachment":[{"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/media?parent=1464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/categories?post=1464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/tags?post=1464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}