A 406 Not Acceptable means your request asked for a format the server says it cannot provide. In practice, on a normal website, it is almost always a security rule rather than a real format problem.
The honest explanation
In theory a 406 is about content negotiation. Your request says which formats and languages it will accept, and if the server has none of them, it answers 406.
In practice you rarely see a genuine one. Most 406s on shared hosting come from a security module, commonly mod_security, deciding a request looks suspicious and rejecting it with that code.
What to do
- Note exactly which request triggered it. A 406 on one form submission and nowhere else points at a security rule.
- Ask your host whether mod_security is enabled, and whether they can see what rule fired.
- If the request contains code-like text, that is often what set it off. Certain words in a form field can trigger a rule.
- Only if you are working with an API, check the
Acceptheader you are sending.
You usually cannot fix this yourself on shared hosting. The rule sits at server level and your host has to adjust it.