HTTP 300 — Multiple Choices
HTTP 300
Multiple Choices
The requested URL has several representations and the server is not choosing between them.
What 300 actually means
The resource exists in more than one form — different languages, different formats, different qualities — and the server is handing back a list rather than picking one. There is no standard machine-readable format for that list, which is why almost nobody uses it: content negotiation via `Accept` headers solves the same problem without a round trip. Apache's MultiViews can still produce one when a filename matches several files.
Common causes
- Apache `MultiViews` found several files matching one request path
- A server implementing transparent content negotiation offered the options
- A resource genuinely available in several formats with no server-side preference
If you're just trying to view the page
- Pick one of the offered links if the page lists them
- Nothing else to do — this is a server configuration choice, not an error on your end
If it's your site
- Prefer `Accept`-header negotiation with a `Vary` response header over returning 300
- If you must return 300, include a `Location` header with the server's preferred choice so simple clients can follow it
- Turn off `MultiViews` in Apache if you did not mean to enable extension-less negotiation
Reference
- Status code
- 300
- Reason phrase
- Multiple Choices
- Category
- 3xx — Redirection
- Cacheable by default
- Yes
- Defined in
- RFC 9110 §15.4.1
Common questions
- What does HTTP 300 mean?
- The requested URL has several representations and the server is not choosing between them. The resource exists in more than one form — different languages, different formats, different qualities — and the server is handing back a list rather than picking one. There is no standard machine-readable format for that list, which is why almost nobody uses it: content negotiation via `Accept` headers solves the same problem without a round trip.
- How do I fix a 300 error?
- Pick one of the offered links if the page lists them
- Is 300 a client error or a server error?
- 300 is in the 3xx range, which means redirection. It is not an error at all.
Related pages
- 301 Moved Permanently The URL has permanently moved and clients should use the new one from now on.
- 302 Found The resource is temporarily at a different URL; keep using the original one.
- 304 Not Modified Your cached copy is still current, so the server is not sending the file again.
- 307 Temporary Redirect Like 302, but the client must repeat the request with the same method and body.
- 308 Permanent Redirect Like 301, but the client must repeat the request with the same method and body.
- 303 See Other The request succeeded; now go and GET a different URL to see the result.
- 305 Use Proxy A deprecated code telling the client to repeat the request through a specific pr
- 306 (Unused) A reserved code that was used in an old draft and is now permanently unassigned.