Cách tốt nhất để máy chủ sitemap.xml
và robots.txt
với Spring MVC
là gì? Tôi muốn máy chủ các tập tin này thông qua Controller
một cách sạch sẽ nhất.Cung cấp sitemap.xml và robots.txt với Spring MVC
15
A
Trả lời
25
Tôi đang dựa vào JAXB để tạo sitemap.xml cho tôi.
điều khiển của tôi trông giống như dưới đây, và tôi có một số bảng cơ sở dữ liệu để theo dõi các liên kết mà tôi muốn xuất hiện trong sitemap: -
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;
}
}
Đối với robots.txt, nó trông giống như dưới đây, và rõ ràng, bạn sẽ cần phải cấu hình nó dựa trên sở thích của bạn: -
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";
}
}
Các vấn đề liên quan
- 1. Trong Express, tôi đặt các tệp sitemap.xml và robots.txt của mình ở đâu?
- 2. Lỗi trong ASP.NET MVC 4 với Nhà cung cấp Universal
- 3. Cung cấp các tệp tĩnh cấp gốc trên Heroku với Django?
- 4. Spring MVC và Checkboxes
- 5. spring mvc với facelets
- 6. AJAX với Spring MVC
- 7. AngularJS với Spring-mvc
- 8. ASP.NET MVC 3 bản địa hóa với DisplayAttribute và nhà cung cấp tài nguyên tùy chỉnh
- 9. Vaadin và Spring MVC Integration
- 10. Tệp tĩnh trong Flask - robot.txt, sitemap.xml (mod_wsgi)
- 11. So sánh giữa GWT và Spring MVC
- 12. Spring 3 JSON với MVC
- 13. Trộn Spring MVC với Angular.JS
- 14. Thẻ meta và robots.txt
- 15. Gói nhà cung cấp xác thực tùy chỉnh bảo mật Spring với giao dịch
- 16. Robots.txt cho nhiều tên miền
- 17. Reverse AJAX (Comet) và Spring MVC so với Scala/LIFT?
- 18. Cung cấp các tệp tĩnh với WSGI và Python 3
- 19. Cung cấp các tệp tĩnh với mod_wsgi và Django
- 20. Spring MVC 3.0 và Apache Gạch 2
- 21. Web Frameworks: Play khác với Spring MVC như thế nào?
- 22. Spring MVC Struts Mixing
- 23. GWT và Spring MVC, có đáng không?
- 24. Spring MVC và các thẻ tùy chỉnh
- 25. ASP.NET MVC vs Spring MVC
- 26. Generic Spring MVC Controller với Inheritance
- 27. @JsonSerialize/@JsonDeserialize không gọi với Spring MVC
- 28. Tuyến đường ứng dụng với Spring MVC
- 29. Spring MVC vs ASP.NET (MVC?)
- 30. Cung cấp các tệp lớn với PHP
Cảm ơn cho câu trả lời tốt đẹp tôi sẽ đợi chút với đóng cửa một câu hỏi để xem nếu có nhiều người sẽ góp phần ... –
Bạn sẽ cần phải chắc chắn những phương pháp điều khiển đang lưu trữ rất nhiều. Thông thường, những yêu cầu này thậm chí không nên nhấn vào máy chủ ứng dụng, thay vào đó được dùng làm nội dung tĩnh bởi apache .. – Solubris
@Lithium Bạn cũng có thể đặt nó làm câu trả lời thay vì trò chuyện. Dù sao tôi cần sitemap.xml của tôi được tạo động nhưng đối với những robot cần nhiều hơn mức cần thiết. –