301-Redirect
如何在 Jetty 9 中發送從 HTTP 到 HTTPS 的永久(301)重定向
在遵循有關如何讓 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 文件,我們能夠獲得所需的行為。該文件的內容如下。請注意,這也會將 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>