Good evening,
on my CentOS 7 server I run Jetty by:
# /usr/bin/java -Djdbc.drivers=org.postgresql.Driver -jar /usr/share/java/jetty-distribution-9.4.27.v20200227/start.jar jetty.home=/usr/share/java/jetty-distribution-9.4.27.v20200227 jetty.base=/var/www/jetty-base-ru jetty.http.host=127.0.0.1 jetty.http.port=8080
Also I serve PHP files through FastCGI as suggested at
https://www.eclipse.org/jetty/documentation/9.4.28.v20200408/configuring-fastcgi.htmlMy XML config file is listed at the very bottom of this mail.
However I have a problem: when I create a static HTML file in UTF-8 encoding, with no BOM, Russian language - it is misinterpreted by browsers and they do not display Russian letters. When I rename the file. from .html to .php then it works - because the following HTTP header is suddenly added:
Content-Type: text/html;charset=utf-8
Is there please a way to configure Jetty through the XML file below to send the header for all HTML files?
I have searched Stackoverflow and the question seems to be complicated because of the servlet spec.
I would prefer finding an XML option, because it would suit my deployment and Jetty-upgrades procedure best (i.e. no editing the files distributed with new Jetty versions, but better just configuring it once in $JETTY_BASE/webapps)
Thank you and happy Easter :-)
Alex
PS: below is my /var/www/jetty-base-ru/webapps/slova.de.xml, how to add the header there?
?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"
"
http://www.eclipse.org/jetty/configure_9_3.dtd">
<Configure class="org.eclipse.jetty.servlet.ServletContextHandler">
<New id="root" class="java.lang.String">
<Arg>/var/www/html/
slova.de</Arg>
</New>
<Set name="contextPath">/</Set>
<Set name="resourceBase"><Ref refid="root" /></Set>
<Set name="virtualHosts">
<Array type="java.lang.String">
<Item>
slova.de</Item>
<Item>
www.slova.de</Item>
</Array>
</Set>
<Set name="welcomeFiles">
<Array type="string">
<Item>index.php</Item>
<Item>index.html</Item>
</Array>
</Set>
<Call name="addFilter">
<Arg>org.eclipse.jetty.fcgi.server.proxy.TryFilesFilter</Arg>
<Arg>/*</Arg>
<Arg>
<Call name="of" class="java.util.EnumSet">
<Arg><Get name="REQUEST" class="javax.servlet.DispatcherType" /></Arg>
</Call>
</Arg>
<Call name="setInitParameter">
<Arg>files</Arg>
<Arg>$path /index.php?p=$path</Arg>
</Call>
</Call>
<Call name="addServlet">
<Arg>
<New class="org.eclipse.jetty.servlet.ServletHolder">
<Arg>default</Arg>
<Arg>
<Call name="forName" class="java.lang.Class">
<Arg>org.eclipse.jetty.servlet.DefaultServlet</Arg>
</Call>
</Arg>
<Call name="setInitParameter">
<Arg>dirAllowed</Arg>
<Arg>false</Arg>
</Call>
<Call name="setInitParameter">
<Arg>gzip</Arg>
<Arg>true</Arg>
</Call>
</New>
</Arg>
<Arg>/</Arg>
</Call>
<Call name="addServlet">
<Arg>org.eclipse.jetty.fcgi.server.proxy.FastCGIProxyServlet</Arg>
<Arg>*.php</Arg>
<Call name="setInitParameter">
<Arg>proxyTo</Arg>
<Arg>
http://localhost:9000</Arg>
</Call>
<Call name="setInitParameter">
<Arg>prefix</Arg>
<Arg>/</Arg>
</Call>
<Call name="setInitParameter">
<Arg>scriptRoot</Arg>
<Arg><Ref refid="root" /></Arg>
</Call>
<Call name="setInitParameter">
<Arg>scriptPattern</Arg>
<Arg>(.+?\\.php)</Arg>
</Call>
</Call>
</Configure>
_______________________________________________