¿Cuál es la mejor forma de servidor sitemap.xml
y robots.txt
con Spring MVC
? Quiero servidores estos archivos a través de Controller
de la manera más limpia.Sirviendo sitemap.xml y robots.txt con Spring MVC
15
A
Respuesta
25
Confío en JAXB para generar el sitemap.xml para mí.
Mi controlador se ve algo como lo de abajo, y tengo algunas tablas de bases de datos para realizar un seguimiento de los enlaces que desea que aparezca en el mapa del sitio: -
SitemapController.java
@Controller
public class SitemapController {
@RequestMapping(value = "/sitemap.xml", method = RequestMethod.GET)
@ResponseBody
public XmlUrlSet main() {
XmlUrlSet xmlUrlSet = new XmlUrlSet();
create(xmlUrlSet, "", XmlUrl.Priority.HIGH);
create(xmlUrlSet, "/link-1", XmlUrl.Priority.HIGH);
create(xmlUrlSet, "/link-2", XmlUrl.Priority.MEDIUM);
// for loop to generate all the links by querying against database
...
return xmlUrlSet;
}
private void create(XmlUrlSet xmlUrlSet, String link, XmlUrl.Priority priority) {
xmlUrlSet.addUrl(new XmlUrl("http://www.mysite.com" + link, priority));
}
}
XmlUrl.java
@XmlAccessorType(value = XmlAccessType.NONE)
@XmlRootElement(name = "url")
public class XmlUrl {
public enum Priority {
HIGH("1.0"), MEDIUM("0.5");
private String value;
Priority(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
@XmlElement
private String loc;
@XmlElement
private String lastmod = new DateTime().toString(DateTimeFormat.forPattern("yyyy-MM-dd"));
@XmlElement
private String changefreq = "daily";
@XmlElement
private String priority;
public XmlUrl() {
}
public XmlUrl(String loc, Priority priority) {
this.loc = loc;
this.priority = priority.getValue();
}
public String getLoc() {
return loc;
}
public String getPriority() {
return priority;
}
public String getChangefreq() {
return changefreq;
}
public String getLastmod() {
return lastmod;
}
}
XmlUrlSet.java
@XmlAccessorType(value = XmlAccessType.NONE)
@XmlRootElement(name = "urlset", namespace = "http://www.sitemaps.org/schemas/sitemap/0.9")
public class XmlUrlSet {
@XmlElements({@XmlElement(name = "url", type = XmlUrl.class)})
private Collection<XmlUrl> xmlUrls = new ArrayList<XmlUrl>();
public void addUrl(XmlUrl xmlUrl) {
xmlUrls.add(xmlUrl);
}
public Collection<XmlUrl> getXmlUrls() {
return xmlUrls;
}
}
Para el robots.txt, se ve algo así como lo de abajo, y, obviamente, tendrá que configurarlo en función de sus gustos: -
RobotsController.java
@Controller
public class RobotsController {
@RequestMapping(value = "/robots.txt", method = RequestMethod.GET)
public String getRobots(HttpServletRequest request) {
return (Arrays.asList("mysite.com", "www.mysite.com").contains(request.getServerName())) ?
"robotsAllowed" : "robotsDisallowed";
}
}
Cuestiones relacionadas
- 1. Tomcat sirviendo recursos estáticos en la aplicación Spring MVC
- 2. ¿Cómo configuro nginx para redirigir a una url para robots.txt y sitemap.xml
- 3. MVC: ¿Cómo enrutar /sitemap.xml a un ActionResult?
- 4. Sirviendo archivos estáticos de raíz en Heroku con Django?
- 5. jQuery y Spring MVC
- 6. AJAX con Spring MVC
- 7. ServletContext y Spring MVC
- 8. @JsonView con Spring MVC
- 9. Robots.txt para múltiples dominios
- 10. Archivos estáticos en Flask - robot.txt, sitemap.xml (mod_wsgi)
- 11. Vaadin y Spring MVC Integration
- 12. Spring MVC, REST y HATEOAS
- 13. Spring MVC y etiquetas personalizadas
- 14. Sirviendo archivos estáticos con mod_wsgi y Django
- 15. Spring 3 JSON con MVC
- 16. Spring MVC y JSR 303
- 17. Spring MVC 3.0 y Apache Tiles 2
- 18. Buscando un tutorial de OSGi con Spring (específicamente Spring MVC)
- 19. Sirviendo archivos estáticos con Jetty
- 20. Marshaling JSON y Generics en Java con Spring MVC
- 21. Spring MVC y casillas de verificación
- 22. Spring 3 MVC y asistentes modales
- 23. Spring MVC: Diferencia entre spring: bind y form: formulario
- 24. Spring Security, Spring MVC y Sesiones de inicio de sesión
- 25. ¿Cómo encontrar la ruta de sitemap.xml en los sitios web?
- 26. Embedded Jetty y Spring Web MVC
- 27. Spring MVC return JSONS y excepción Handling
- 28. spring mvc rest response json y xml
- 29. ASP.NET MVC vs Spring MVC
- 30. ¿Cómo uso Comet con Spring MVC?
Gracias por la buena respuesta Voy a esperar un poco al cerrar una pregunta para ver si más personas contribuirán ... –
Tendrá que asegurarse de que estos métodos de control estén muy en caché. Normalmente, estas solicitudes ni siquiera deberían llegar al servidor de la aplicación, sino que deben servir como contenido estático por apache. – Solubris
@Lithium También es una buena idea que puede colocarlo como respuesta en lugar de chat. De todos modos, necesito mi sitemap.xml creado dinámicamente, pero para robots que debería ser más que necesario. –