Fab,

On 7/6/25 6:58 AM, Fab Stz wrote:
Does tomcat support content negotiation like apache httpd does [1] for the Accept-Language header?

No.

How to configure this for a webapp context?

You'll have to build this capability into your own web application.

> Use case is *serving static pages* with "href=my_page.html" and where > files in the webapp folder are actually> - my_page.html.en
  - my_page.html.de
  - my_page.html.fr
  - my_page.html.it
  - ...

At the moment, when trying to load my_page.html it shows 404 error.

Do you have a file called my_page.html without any language specifier? Tomcat is looking for a directory entry with the exact name "my_page.html".

From what I understand it would be possible with
org.apache.tomcat.util.http.parser.AcceptLanguage, but only is
served inside a servlet. AFAIU this is not usable for static pages.>
[1] https://httpd.apache.org/docs/current/content-negotiation.html

You will have to implement this yourself in a deployed application, since Tomcat does not support it directly. You have access to the Accept-Language header but you will have to parse the header value and compare it to the list of languages "supported" by the set of on-disk files.

I wouldn't recommend using Tomcat's AcceptLanguage class, since it's not really part of the public API and wouldn't be portable to other containers. Instead, implement your own content-negotiation, since it's not very complicated.

On the other hand, you could advocate for content-negotiation capabilities similar to mod_negotiation to be built into Tomcat.

My advice would be to use a content-negotiating web server like httpd as a proxy to Tomcat, but the addition of another component into your environment might be more complicated than just implementing content-negotiation in the application.

-chris


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to