Redirection 301, redirection permanente dans Java Servlet
1. Qu'est-ce que Redirect 301?
Redirect 301 consiste à rediriger de façon permanente (redirect permanently) une ancienne adresse du site vers une nouvelle adresse de site. Par exemple, votre publication actuelle a l'URL:
- http://yourdomain.com/document/123/java-servlet
Et vous voulez déplacer définitivement l'ancien lien vers un nouveau URL:
- https://yourdomain.com/article/123/java-servlet-tutorial
Dans le cas où vous devez traiter de Redirect 301. Lorsque des utilisateurs isitent l'ancienne adresse, il sera redirigé vers un nouveau code 301. Le code d'état 301 doit être informé avec le navigateur des utilisateurs ainsi que le moteur de recherche google. Normalement, le moteur de recherche de google prend quelques jours pour remplacer les anciens liens par les nouveaux.
Remarque: redirect 301 réduira légèrement le classement du site.
Redirect 301, est une bonne façon de vous aider à déplacer un site web complet de l'ancien domaine vers un nouveau domaine, et il faut d'une à deux semaines pour que le moteur de recherche google remplisse toutes les anciennes URL. Et le classement des sites peut diminuer légèrement.
2. Redirect 302 et Redirect 301
Dans Servlet vous êtes familier avec la méthode response.sendRedirect(). C'est la méthode de rediriger la demande d'un utilisateur vers une nouvelle page, elle s'appelle également Redirect 302 ou bien la redirection temporaire.
** Redirect 302
// Temporary Redirect (Redirect 302)
response.sendRedirect(newURL);
** Redirect 301
// Redirect 301.
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", newUrl);
3. Exemple de Redirect 301
Ci-dessous est un projet simple qui utilise de Redirect 301.
La classe DataUtils est une classe utilitaire qui sort de la carte (map) entre les anciennes URL et les nouvelles URL, vous pouvez également stocker et récupérer ces informations à partir de la base de données.
DataUtils.java
package org.o7planning.redirect301;
import java.util.HashMap;
import java.util.Map;
public class DataUtils {
// Ancien URL - Nouveau URL.
private static Map<String, String> redirect301Map;
public static Map<String, String> getRedirect301Map() {
if (redirect301Map == null) {
redirect301Map = new HashMap<String, String>();
redirect301Map.put("http://localhost:8080/Redirect301/document/123/java-servlet",
"http://localhost:8080/Redirect301/article/123/java-servlet-tutorial");
redirect301Map.put("http://localhost:8080/Redirect301/document/111/java-io-tutorial",
"http://localhost:8080/Redirect301/article/111/java-io-tutorial");
}
return redirect301Map;
}
}
MyServlet simule une page de votre web.
MyServlet.java
package org.o7planning.redirect301;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/*")
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public MyServlet() {
super();
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
String text = "<h2>Hello</h2>"//
+ "You are in URL: <br/>"//
+ "<h3>" + request.getRequestURL() + "</h3>";
response.getWriter().print(text);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
Redirect301Filter est un filter vérifiant des URL envoyés au serveur, si c'est un ancien URL, il est redigé 301 vers un nouveau URL.
Redirect301Filter.java
package org.o7planning.redirect301;
import java.io.IOException;
import java.util.Map;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebFilter("/*")
public class Redirect301Filter implements Filter {
public Redirect301Filter() {
}
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
// URL envoie au Serveur.
String url = request.getRequestURL().toString();
System.out.println("Incomming URL = " + url);
Map<String, String> redirect301Map = DataUtils.getRedirect301Map();
// Cherche un nouveau URL.
String newUrl = redirect301Map.get(url);
if (newUrl != null) {
// Redirige 301 (Redirect 301).
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", newUrl);
return;
}
chain.doFilter(req, resp);
}
@Override
public void init(FilterConfig fConfig) throws ServletException {
}
}
Exécutez de l'exemple:
Tutoriels de programmation Java Servlet/JSP
- Installer Tomcat Server pour Eclipse
- Installer Glassfish Web Server sur Windows
- Exécutez l'application Web Java Maven dans Tomcat Maven Plugin
- Exécutez l'application Web Java Maven dans Jetty Maven Plugin
- Exécuter une tâche d'arrière-plan dans l'application Java Servlet
- Le Tutoriel de Java Servlet pour des débutants
- Le Tutoriel de Java Servlet Filter
- Le Tutoriel de Java JSP
- Le Tutoriel de Java JSP Standard Tag Library (JSTL)
- Installer Web Tools Platform pour Eclipse
- Créez une application de connexion simple et sécurisez les pages avec Java Servlet Filter
- Créer une application Web Java simple à l'aide de Servlet, JSP et JDBC
- Upload et Download de fichiers stockés sur le disque dur avec Java Servlet
- Télécharger et télécharger des fichiers à partir de la base de données à l'aide de Java Servlet
- Affichage une image dans une base de données avec Java Servlet
- Redirection 301, redirection permanente dans Java Servlet
- Comment redirige http en https automatiquement dans une application web de Java?
- Utiliser Google reCAPTCHA dans l'application Web Java
Show More