Следуя предложению по Как заставить Jetty перенаправлять http на https, мы смогли получить наше автономное развертывание Jetty для перенаправления всех HTTP-запросов на HTTPS. Однако перенаправление - это 302. Как мы можем вместо этого сделать это перенаправление 301 (постоянным)?
Для справки мы добавили это в файл Jetty etc / webdefault.xml:
<web-app>
...
<security-constraint>
<web-resource-collection>
<web-resource-name>Everything in the webapp</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
</web-app>
Нам удалось добиться желаемого поведения, добавив файл redirector.xml рядом с war. Ниже приведено содержимое этого файла. Обратите внимание, что это также перенаправит example.com на www.example.com:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure class="org.eclipse.jetty.server.handler.MovedContextHandler">
<Set name="contextPath">/</Set>
<Set name="newContextURL">https://www.example.com</Set>
<Set name="permanent">true</Set>
<Set name="discardPathInfo">false</Set>
<Set name="discardQuery">false</Set>
<Set name="virtualHosts">
<Array type="String">
<Item>example.com</Item>
</Array>
</Set>
</Configure>