What is a 307 redirect?
A 307 Temporary Redirect tells the client that the resource lives at a different URL for now, and that the request should be repeated there unchanged: a POST stays a POST. For search engines it means the same as a 302: the original URL stays in the index.
Many 307s people notice in their browser are not real server responses at all, which is the first thing to rule out.
307 compared with 302
The two differ in one technical detail. After a 302, browsers have long been allowed to switch a POST request to a GET, dropping the form data. A 307 forbids that.
POST /checkout HTTP/1.1 POST /checkout HTTP/1.1
→ 302 Found → 307 Temporary Redirect
Location: /checkout-v2 Location: /checkout-v2
→ GET /checkout-v2 → POST /checkout-v2 (body resent)
For ordinary page views, which are GET requests, a visitor cannot tell them apart. The distinction matters for forms, APIs and anything else that sends data.
How Google treats a 307
Google groups 302, 303 and 307 together as temporary redirects. It follows the redirect and fetches the target, but treats the source as the URL to keep showing in results. If a "temporary" redirect stays in place for a long time, Google may eventually decide the move is permanent and index the target instead, but you should not rely on that. If the change is for good, send a 301 or a 308.
The 307 your server did not send
Open the Network panel in Chrome, request an http:// address on a site that uses HSTS, and you will see:
Status Code: 307 Internal Redirect
Non-Authoritative-Reason: HSTS
That response was generated inside the browser. Chrome remembered that the domain is HTTPS-only and rewrote the request before sending anything. Your server never issued a 307, and crawlers do not see one. To find out what the server really returns, ask it directly:
$ curl -I http://example.com/
HTTP/1.1 301 Moved Permanently
Location: https://example.com/
If curl shows a 301, your setup is correct and the 307 is only the browser's shortcut.
When to use one
- Maintenance or outages where requests, including form submissions, should go elsewhere for a while. For a page that is simply down, a
503is the more honest answer. - Temporary routing of API or form endpoints during a deployment.
- Short-lived campaigns or tests where the original URL will return.
Hosting platforms and frameworks often issue 307s by default for their "temporary" redirect option, so you may be using them without having chosen to.
WordPress core's wp_redirect() sends a 302 unless told otherwise, and redirect plugins typically offer 301 and 302; Hydrogen SEO's redirection manager offers those two. Since search engines read 302 and 307 the same way, a WordPress site rarely needs a 307 for page URLs. If an audit tool reports 307s on your pages, check with curl whether the server, the CDN or only the browser produced them before you start rewriting rules.
Common questions
Is a 307 redirect bad for SEO?
No, if the move really is temporary. It becomes a problem when it is used for a permanent change, because search engines keep the old URL indexed and are slower to consolidate signals on the new one.
Why does Chrome show 307 Internal Redirect?
Because the site uses HSTS. Chrome upgrades the HTTP request to HTTPS itself and labels that as an internal 307. It is not a response from your server.
What is the difference between 307 and 308?
Both keep the request method. A 307 is temporary and a 308 is permanent, mirroring the difference between 302 and 301.